我在短语查询方面遇到问题。
查询输入:“多个结果”
我只想得到包含完全匹配短语的文本:
“单词单词单词多个结果单词单词单词”
“单词单词到多个结果单词”
但问题是:
“单词单词单词多个结果单词单词单词”
“单词单词到多个结果单词”
“单词许多结果单词” - 我不想在我的结果中出现这个
架构:
<fieldType name="text" class="solr.TextField" termVectors="true" termPositions="true" termOffsets="true" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
感谢帮助
最佳答案
如果您需要以相同顺序进行精确短语匹配,则需要以短语形式传递查询,例如“to many results”。
这将返回完全匹配的结果以及所有单词的结果。
如果查询不是短语查询并且只需要存在的所有单词,则搜索将在文档中的某些位置查找单词(取决于 slop 的定义),默认搜索运算符为 OR。
如果您使用dismax ,其控制由query slop对于 qf和 Minimum match (mm) ,文档中需要出现的术语数量才能作为结果返回。
如果您使用standard request handler您需要检查 Query parser default operator .
http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator
关于Solr - 仅匹配精确的短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386765/