Solr中q和fq之间的差异

Maw*_*wia 12 solr

有人请给我一个体面的解释,在Solr查询中qfq之间的区别,包括一些点,如 -

  • 他们有相同的语法吗?
  • 他们会返回相同的结果吗?
  • 何时使用哪一个?为什么?
  • 任何其他差异

jro*_*jro 15

标准 solr 查询在请求中使用“q”参数。过滤查询使用“fq”参数。

主要区别在于过滤后的查询不影响相关性分数;查询纯粹用作过滤器(本质上是文档集交集)。

  • 这应该是最佳答案,因为最重要的区别在于“q”计算分数,而“fq”不计算分数。 (2认同)

Sap*_*tne 6

q参数接受查询并对索引执行.然后,您可以使用筛选器查询(可以使用多个筛选器查询)来筛选结果.

例如,您的查询可能如下所示.

q=author:shakespeare
Run Code Online (Sandbox Code Playgroud)

这将匹配"作者"字段中具有"莎士比亚"的文档.然后你可以使用像这样的过滤查询.

fq=title:hamlet
fq=type:play
Run Code Online (Sandbox Code Playgroud)

这些将根据其他字段过滤结果.您甚至可以在同一个字段上过滤.

q和fq参数的查询语法类似

  • 有q =*:*将给你所有文件,它不会计算相关性分数,因为所有文件都符合条件,然后做fq = author:莎士比亚将运行快速的过滤操作,如果是q = author:莎士比亚它需要计算所选文件的分数,这也不会那么快. (7认同)
  • 为什么不直接做`q=author:shakespeare AND title:hamlet AND type:play`? (7认同)
  • 为什么你需要同时使用q =*.*和fq = author:shakspeare.你可以使用q = author:shakspeare.每当使用多个字段进行过滤时,fq都很有用. (2认同)