使用多个术语进行Solr搜索的结果不正确

时间:2017-03-10 02:17:06

标签: solr

也许有人可以告诉我Solr如何匹配条款。所以我有一个名为assignedBy的字符串属性,我使用值“Aaron Mason”(没有引号)对此属性进行查询。 Solr返回的匹配次数超出了我的预期,因为术语“Mason”也匹配其他字段中包含单词“Mason”的文档。通过打开调试功能(来自Solr管理员),我看到Solr将查询分解为两个属性查询 - “assign”的“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",

1 个答案:

答案 0 :(得分:2)

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

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

因此,Solr搜索其索引并检索具有字段assignedBy的所有文档的组合结果,其中包含术语&#34; Aaron&#34;以及所有包含字段_text_且带有术语&#34; mason&#34;。

的文档

您可能已使用copyfield将某些字段值复制到 text 字段。检查它。

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

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

这只能找到与该字段匹配的内容&#34; assignedBy&#34;在qf

中指定
相关问题