【问题标题】:Solr preserve whitspace searchSolr 保留空白搜索
【发布时间】:2013-06-08 13:07:41
【问题描述】:

下面是我的字段类型,我想在搜索过程中保留空白

 <fieldType name="searchterm" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="250" />
        </analyzer>
        <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
    </fieldType>

例如:input = "alpha beta" 并且我搜索 "alpha" ,"beta" 将匹配,但我如何强制不匹配搜索词,如 "alpha eta"(不应该匹配) .我也应该匹配 "eta","pha" 但不匹配 "alpha eta"

【问题讨论】:

  • “alpha eta”真的匹配吗?
  • 也许是带状过滤器? -shingled_text_field:alpha eta
  • @FridayChils: 是的,上面的 FilterType alpha eta 匹配 alpha
  • 什么是-shingled_text_field?

标签: solr


【解决方案1】:

很高兴知道什么样的应用程序需要这样的搜索:-)。

您可以执行以下操作:

  • 如果您的搜索词没有空格,请使用现有字段searchterm
  • 为了帮助搜索包含空格的查询,请创建一个新的copyField(例如称为newsearchterm),它使用EdgeNGramFilterFactory 而不是NGramFilterFactory。

对于newsearchterm,分析将以这种方式进行:

alpha beta ==> alp, alph, alpha, bet, beta

所以搜索 newsearchterm:(alpha AND eta) 不会匹配 alpha beta

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2010-09-20
    • 2013-02-02
    • 2019-03-26
    • 1970-01-01
    • 2011-12-15
    • 2016-08-26
    相关资源
    最近更新 更多