【问题标题】:Solr "+" or required operatorSolr "+" 或必需的运算符
【发布时间】:2016-09-20 23:56:21
【问题描述】:

我在 solr(5.1) 中使用 3 个术语进行搜索,当我更改术语的顺序时会得到不同的结果。 当我使用来自 solr 的 debugQuery 时,我发现当术语之间的运算符为 AND 时,solr 正在添加 +(required operator)。

例子:-

我有 4 个以字段为名称的文档。默认运算符为 OR

“文档”:[ { “名称”:“闪电盗贼” }, { “名称”:“怪物之海” }, { “名称”:“苏菲的世界:希腊哲学家” }, { "name": "Lucene in Action, Second Edition" } ]

Query1 = name:(“怪物之海”而不是“Lucene in Action, Second Edition” AND “闪电小偷”)

Result = "name": "闪电小偷"

"parsedquery": "name:The Sea of​​ Monsters -name:Lucene in Action, Second Edition +name:The Lightning Thief"

查询 2 = name:("The Sea of​​ Monsters" AND "The Lightning Thief" NOT "Lucene in Action, Second Edition")

结果 = 找到 0 个文档

"parsedquery": "+name:The Sea of​​ Monsters +name:The Lightning Thief -name:Lucene in Action, Second Edition""

请帮我理解这个逻辑。

【问题讨论】:

  • 应该相同。检查两个查询中使用的术语是否完全相同。
  • 是的,条款完全相同。只是顺序不同

标签: solr


【解决方案1】:

如果您的默认运算符是 OR,这就是我所期望的。你的第二个例子是

TERM1 (OR) NOT TERM2 和 TERM3

所以 TERM1 是可选的

【讨论】:

    【解决方案2】:

    问题当然来自您的默认运算符(AND 与 OR)。能否提供准确的查询和调试输出?

    另外,尝试在您的查询中激活 edismax,如下所示,以便您可以使用否定。

    http://localhost:8983/solr/your_search_core/select?defType=edismax&q=(term1+OR+term2)+AND+-term3

    【讨论】:

    • 用例子更新了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多