【问题标题】:Solr - match only exact phraseSolr - 仅匹配确切的短语
【发布时间】:2012-02-21 23:07:57
【问题描述】:

我的短语查询有问题。

查询输入:“to many results”

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

  1. "word word wordto many resultsword word word"

  2. "word wordto many resultsword"

但问题是:

  1. "word word wordto many resultsword word word"

  2. "word wordto many resultsword"

  3. "word ma​​ny 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>

感谢您的帮助

【问题讨论】:

  • 您能告诉我们您正在使用什么查询解析器并粘贴调试输出 (debugQuery=true) 以查看查询是如何解析的吗?

标签: solr lucene solandra


【解决方案1】:

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

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

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

如果您使用的是standard request handler,则需要检查Query parser default operator

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

【讨论】:

    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2017-01-12
    相关资源
    最近更新 更多