solr查询的参数中为啥要有fq过虑查询??不是有q参数就可以了吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr查询的参数中为啥要有fq过虑查询??不是有q参数就可以了吗?相关的知识,希望对你有一定的参考价值。

solr 查询的参数中为什么要有fq过虑查询??不是有q参数就可以了吗?
fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。

按上面的解释 要找关键字mm,并且date_time是20081001到20091031之间 把条件放到q中不就了???

虽然已经过去很久的问题了,为了后面看的人码字,有一些情况是必须用fq的,比如高亮的正确显示。例如你只想关键字keyword为“我们”时候高亮显示,如果q里还有别的条件,如attr不为空,不为空我们一般这样写attr:*,这样查询结果会有很多不是我们的也会高亮,这时候就需要把attr:*的条件放在fq里。 参考技术A 可能是效率与代码整洁性吧。都是可以实现的。本回答被提问者采纳

在 solr 响应的过滤器查询中传递逗号分隔值

【中文标题】在 solr 响应的过滤器查询中传递逗号分隔值【英文标题】:passing comma separated values in filter query of solr response 【发布时间】:2011-07-14 20:44:17 【问题描述】:

我想在 solr 响应的过滤查询 (fq) 中传递逗号分隔值,目前当我想传递多个类别时,我使用 OR 运算符。 像这样 fq=categoryId:3 OR categoryId:55 OR categoryId:34

有没有办法传递像 fq=categoryId:3,55,34 这样的值

【问题讨论】:

【参考方案1】:

如果您的过滤查询字段是文本或字符串类型,您也可以使用 fq=categoryId:(IN 3 55 34 44)。但 IN 运算符不适用于整数字段或其他字符串/文本字段。

【讨论】:

【参考方案2】:

fq=categoryId:(3 55 34) 如果您的默认运算符是 OR 应该可以工作。否则,请尝试fq=categoryId:(3 OR 55 OR 34)。这在 Lucene 查询语法中称为 Field Grouping。 (Solr 支持完整的 Lucene 语法,如文档中的 here。)

【讨论】:

以上是关于solr查询的参数中为啥要有fq过虑查询??不是有q参数就可以了吗?的主要内容,如果未能解决你的问题,请参考以下文章

Solr6.5查询参数说明

solr查询参数详解

solr 查询的相关配置

SOLR 过滤器查询与主查询

《艳遇solr》5--solr6.3.0 AdminUI查询中各参数的含义

solr必知必问问题