2

我对短语查询有疑问。

查询输入:“to many results”

我只想拥有包含完全匹配短语的文本:

  1. “word word word to many results word word word”

  2. “词词多结果词”

但问题是:

  1. “word word word to many results word word word”

  2. “词词多结果词”

  3. “word many results word”——我不想在我的结果中出现这个

架构:

<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>

感谢帮助

4

1 回答 1

4

如果您需要以相同顺序精确匹配短语,则需要以短语形式传递查询,例如“to many results”。
这将返回完全匹配和所有单词一起的结果。

如果查询不是短语查询并且只需要存在所有单词,则搜索将在文档中的某些位置查找单词(取决于 slop 的定义),并且默认的搜索运算符是 OR。

如果您使用dismax,它由qfMinimum match (mm)查询slop 控制,文档中需要存在的术语数才能将其作为结果返回。

如果您使用标准请求处理程序,您需要检查查询解析器默认操作符

http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator

于 2012-02-22T20:54:48.163 回答