具有多个术语的Solr搜索结果不正确
也许有人能告诉我Solr如何匹配术语。因此,我有一个名为assignedBy的字符串属性,我使用值“Aaron Mason”(无引号)对该属性进行查询。Solr返回的匹配比我预期的要多,因为术语“Mason”也匹配其他字段中包含单词“Mason”的文档。通过打开调试功能(来自Solr admin),我看到Solr将查询分解为两个属性查询——“aaron”表示assignedBy,而“mason”表示catch all文本(见下文)。这是正确的行为吗?如何确保它只查找与我指定的属性匹配的项?谢谢具有多个术语的Solr搜索结果不正确,solr,Solr,也许有人能告诉我Solr如何匹配术语。因此,我有一个名为assignedBy的字符串属性,我使用值“Aaron Mason”(无引号)对该属性进行查询。Solr返回的匹配比我预期的要多,因为术语“Mason”也匹配其他字段中包含单词“Mason”的文档。通过打开调试功能(来自Solr admin),我看到Solr将查询分解为两个属性查询——“aaron”表示assignedBy,而“mason”表示catch all文本(见下文)。这是正确的行为吗?如何确保它只查找与我指定的属性匹配的项?谢谢
“调试”:{
“rawquerystring”:“指定人:亚伦·梅森”,
“查询字符串”:“指定人:亚伦·梅森”,
“parsedquery”:“assignedBy:aaron u text_uu:mason”,
“parsedquery\u toString”:“assignedBy:aaron\u text\u:mason”,
是的,你是正确的。当你q=assignedBy:Aaron Mason
解析查询后,根据您在模式文件中查询的标记化器,它如下所示
指定人:aaron
和\u text\u:mason
如果未指定字段名queryterm在默认字段(在solrconfig.xml文件中设置)中搜索,则可以在/选择处理程序下查找文本
因此,Solr搜索其索引,并检索具有字段的所有文档的组合结果,该字段由
指定,带有术语“Aaron”,以及具有字段\u text\u
的所有文档带有术语“mason”
您可能已使用copyfield将某些字段值复制到文本字段。请检查它
您可以使用dismax/edismax,在其中您可以指定在哪个字段中搜索所有术语
例如:
q=Aaron Mason&wt=json&debugQuery=on&defType=dismax&qf=assignedBy
这只会查找与qf
中指定的字段“assignedBy”的匹配项。如果您q=assignedBy:Aaron Mason
解析查询后,根据您在模式文件中查询的标记化器,它如下所示
指定人:aaron
和\u text\u:mason
如果未指定字段名queryterm在默认字段(在solrconfig.xml文件中设置)中搜索,则可以在/选择处理程序下查找文本
因此,Solr搜索其索引,并检索具有字段的所有文档的组合结果,该字段由
指定,带有术语“Aaron”,以及具有字段\u text\u
的所有文档带有术语“mason”
您可能已使用copyfield将某些字段值复制到文本字段。请检查它
您可以使用dismax/edismax,在其中您可以指定在哪个字段中搜索所有术语
例如:
q=Aaron Mason&wt=json&debugQuery=on&defType=dismax&qf=assignedBy
这只查找与qf
中指定的字段“assignedBy”匹配的项。感谢您的解释和建议!感谢您的解释和建议!