【问题标题】:Why are wildcards only meant to work on individual search terms, not on phrase searches?为什么通配符仅适用于单个搜索词,而不适用于短语搜索?
【发布时间】:2017-08-11 16:04:02
【问题描述】:

不明白为什么第一次搜索有效而第二次无效?

  1. softwar* eng?neering
  2. "softwar* eng?neering"

如果您需要在短语中执行通配符搜索,则必须将整个短语作为单个词存储在索引中。

根据 Solr in Action, 2014,通配符仅 旨在处理单个搜索字词,而不是短语搜索。

阻止第二个在 Solr 中工作的原因是什么?谢谢。

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    默认情况下它不起作用的原因是分析链没有完全调用通配符搜索,因为当通配符是积极的。 可以应用的过滤器是 MultiTermAware 的过滤器。

    要使其作为通配符用于短语搜索,您实际上需要匹配整个字段值。 IE。 "softwar* eng?neering" should matchsoftware foobar cheese engeneering`,这远远超出了初始短语查询必须匹配的范围。

    但是,只要您将文本作为单个标记而不是单独的标记,或者使用 Persimmonium 建议的不同查询解析器,您就可以执行这些匹配。

    【讨论】:

      【解决方案2】:

      如果您使用ComplexPhraseQueryParser,您可以这样做

      【讨论】:

        猜你喜欢
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        相关资源
        最近更新 更多