【问题标题】:Solr minimum match (mm) ignored by mandatory clause?Solr 最小匹配(mm)被强制条款忽略?
【发布时间】:2016-08-03 04:32:44
【问题描述】:

Solr 属性:

  • solr-5.2.1
  • 默认运算符是AND

我正在使用下一个查询:

NAME:marie SECOND_NAME:curie +PROFESSION:physicist
mm=80%

根据minimum match docs,我预计2个子句将匹配为搜索结果(如(int) (3 * 0.8) = 2)。

由于 PROFESSION 是必需的,我希望在结果中我将在此属性上匹配并且至少在另一个上匹配 - NAMESECOND_NAME.

事实上,我正在获取与 PROFESSION:physicist 匹配的所有文档以及其他字段的任何其他值。如果我从请求中删除 + 符号,则 solr 会返回至少有 2 个匹配项的结果(因此在这种情况下,最小匹配项可以正常工作)

看起来添加强制选项来请求废除最小匹配条件。 smb 能否解释一下这是否是预期的行为?

谢谢

【问题讨论】:

    标签: solr lucene query-parser


    【解决方案1】:

    我建议您使用布尔条件重写一点点查询。

    (PROFESSION:physicist) AND (NAME:marie OR SECOND_NAME:curie )
    

    另外你应该使用 dismax 插件来使用 Min/max

    更新:

    从 Solr4.0 开始,mm 的默认值由 q.op 参数决定(q.op=AND => mm=100%; q.op=OR => mm=0%)。

    【讨论】:

    • 以这种方式重写查询在最小匹配情况下工作得很好。要么我不明白,查询解析器是如何工作的,要么那里有一些错误。谢谢
    • @AlexanderMartynov 我已经更新了我的答案。”来自 Solr4.0 mm 的默认值由 q.op 参数决定(q.op=AND => mm=100%; q.op =OR => mm=0%)。”
    • 感谢您的回答,您能否指点我一些文档/更改列表以阅读更多详细信息?
    • @AlexanderMartynov DixMax 你需要阅读更多关于 DisMax 插件lucidworks.com/blog/2010/05/23/whats-a-dismax (DisMaxRequestHandler)
    • @AlexanderMartynov 当您使用 DisMaxHander 插件时,默认运算符 OR 的工作方式略有不同,而不是简单的查询 plugin.mm 总是在变化。 => (mm 的默认值由 q.op 参数决定(q.op=AND => mm=100%; q.op=OR => mm=0%)。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多