Для своего сайта я использую solr для typeahead solution.Я использую приведенный ниже тип поля для хранения данных в поле, в котором будет работать 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», я не получаю результата.Понятно, что я токенизирую, а затем использую ребро ngram, поэтому при минимуме из 2 букв «5» будет игнорироваться.Можно ли как-нибудь сохранить слова из одной буквы?
Как мне решить эту проблему?