【问题标题】:Incorrect results for Solr search with multiple terms具有多个术语的 Solr 搜索结果不正确
【发布时间】:2017-03-10 02:17:06
【问题描述】:

也许有人可以告诉我 Solr 如何匹配术语。所以我有一个名为assignBy 的字符串属性,我使用值“Aaron Mason”(不带引号)对该属性进行查询。 Solr 返回的匹配项比我预期的要多,因为术语“Mason”也匹配其他字段中包含单词“Mason”的文档。通过打开调试功能(来自 Solr 管理员),我看到 Solr 将查询分解为两个属性查询——assignedBy 的“aaron”和 catch-all text 的“mason”(见下文)。这是正确的行为吗?如何确保它只找到与我指定的属性匹配的内容?谢谢。

"debug":{ "rawquerystring":"assignedBy:Aaron Mason", "querystring":"assignedBy:Aaron Mason", "parsedquery":"assignedBy:aaron _text_:mason", "parsedquery_toString":"assignedBy:aaron _text_:mason",

【问题讨论】:

    标签: solr


    【解决方案1】:

    是的,你是对的。当你q=assignedBy:Aaron Mason 解析查询后,根据您在模式文件中查询标记器,它看起来像 assignedBy:aaron_text_:mason

    如果您不指定字段名称 queryterm 在默认字段中搜索(在 solrconfig.xml 文件中设置),您可以在 /select 处理程序下查找 <str name="df">text</str>。在你的情况下,它可能是_text_

    因此,Solr 搜索其索引并检索所有具有字段 assignedBy 和术语“Aaron”的文档和所有具有字段 _text_ 和术语“mason”的文档的组合结果。

    您可能已经使用 copyfield 将一些字段值复制到 text 字段。检查一下。

    您可以使用 dismax/edismax 指定在哪个字段中搜索所有字词 示例:

    q=Aaron Mason&wt=json&debugQuery=on&defType=dismax&qf=assignedBy

    这只会查找与 qf 中指定的字段“assignedBy”的匹配项

    【讨论】:

    • 感谢您的解释和建议!
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多