Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个术语的Solr搜索结果不正确_Solr - Fatal编程技术网

具有多个术语的Solr搜索结果不正确

具有多个术语的Solr搜索结果不正确,solr,Solr,也许有人能告诉我Solr如何匹配术语。因此,我有一个名为assignedBy的字符串属性,我使用值“Aaron Mason”(无引号)对该属性进行查询。Solr返回的匹配比我预期的要多,因为术语“Mason”也匹配其他字段中包含单词“Mason”的文档。通过打开调试功能(来自Solr admin),我看到Solr将查询分解为两个属性查询——“aaron”表示assignedBy,而“mason”表示catch all文本(见下文)。这是正确的行为吗?如何确保它只查找与我指定的属性匹配的项?谢谢

也许有人能告诉我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”匹配的项。感谢您的解释和建议!感谢您的解释和建议!