Solr保留空白搜索

时间:2013-06-07 14:00:16

标签: solr

下面是我的fieldtype,我想在搜索期间保留空白

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

1 个答案:

答案 0 :(得分:0)

很高兴知道哪种应用需要这样的搜索: - )。

您可以执行以下操作:

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

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

alpha beta ==&gt; alpalphalphabetbeta

因此搜索newsearchterm:(alpha AND eta)alpha beta不匹配。