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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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_Edismax - Fatal编程技术网

SOLR短语查询

SOLR短语查询,solr,edismax,Solr,Edismax,在使用Solr4.0进行搜索并尝试短语查询时,我遇到了一个小问题 我有一个名为“idx_text_general_ci”的字段,它是由所有字段组成的不区分大小写(全部小写)的字段 当我尝试搜索一个短语(marine fitter)时,我的SOLR拒绝搜索该短语,而是将该短语分成两个单词- /select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true debugQuery=下面的真实输出

在使用Solr4.0进行搜索并尝试短语查询时,我遇到了一个小问题

我有一个名为“idx_text_general_ci”的字段,它是由所有字段组成的不区分大小写(全部小写)的字段

当我尝试搜索一个短语(marine fitter)时,我的SOLR拒绝搜索该短语,而是将该短语分成两个单词-

/select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true
debugQuery=下面的真实输出:

<lst name="debug">
<str name="rawquerystring">idx_text_general_ci:marine fitter</str>
<str name="querystring">idx_text_general_ci:marine fitter</str>
<str name="parsedquery">
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter))))/no_coord
</str>
<str name="parsedquery_toString">+(idx_text_general_ci:marine (id:fitter))</str>

idx_text_general_ci:船用装配工
idx_text_general_ci:船用装配工
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter)))/nocoord
+(idx_text_general_ci:marine(id:fitter))
正如您在上面看到的,它将查询分为两部分(idx_text_general_ci:marine然后id:fitter)

我遇到的问题是,我有一个“marine fitter”的精确匹配项,它在idx_text_general_ci字段中出现了两次,但它的排名分数低于出现了三次“marine”一词的文档。我知道,如果我的SOLR按照预期使用短语搜索字段,情况就不会如此

如果我用引号将短语括起来,则结果为零

如果您能提供任何帮助或朝着正确的方向轻推,我们将不胜感激

提前谢谢


Alex

这里发生的是,您的默认查询字段似乎是
id
,因为您将查询指定为

idx_text_general_ci:marine fitter
它在Solr中被转换为
idx\u text\u general\u ci:marine
id:fitter
的析取MaxQuery。大概您想要
idx\u text\u general\u ci:marine
idx\u text\u general\u ci:fitter
。您有两个选项:1)您可以在每个单词前面加上正确的字段和冒号,或者您可以将schema.xml中的defaultSearchField更改为
idx\u text\u general\u ci


我很困惑,为什么用双引号括起来就没有结果了。但是做上述事情应该会对你有所帮助。

嗨。我刚试过,但也不管用。我尝试的查询如下>>>q=idx\u text\u general\u ci:marine+idx\u text\u general\u ci:fitter和q=idx\u text\u general\u ci:marine%20idx\u text\u general\u ci:fitter这是正确的方法吗?您可以在Solr管理面板中尝试一下吗?在那里调试要容易得多。如果您直接在浏览器栏中键入,请使用
+
符号而不是空格。@Alex在“管理”面板中,您可以使用“分析”选项卡输入文档的一部分并查看其索引方式,然后输入查询并查看其处理方式。选中“调试”框,您应该能够找出不匹配的位置。这都是从管理面板内部完成的(该面板只发送与我发送到我的查询页面(/select?…)相同的查询),正如您所看到的,我在其中一个查询中使用了一个空格,但没有找到这个空格。您是否曾经找到过这个?