对于我的网站,我正在使用solr作为预输入解决方案。我正在使用以下fieldtype将数据存储在将在其中运行typeahead的字段中:
<fieldType name="text_suggest" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="8" minGramSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
但是,上述字段类型的问题在于,它不保留任何小于2的单词。
说,我要搜索“ iphone 5”。因此,如果我键入“ iph”,它可以正常工作,但是当我键入“ iphone 5”时,我没有任何结果。可以理解的是,我先进行标记,然后再使用edge ngram,所以对于2个字母中的最小值,“ 5”将被忽略。我也可以保留一个字母单词吗?
我该如何解决?