У меня было такое же требование к проекту.Я должен был реализовать предложение.Что я сделал, так это определил поле подсказки fieldType
<fieldType class="solr.TextField" name="suggester">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="3" outputUnigrams="true" outputUnigramsIfNoShingles="false" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrements="true" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Я использовал ShingleFilterFactory, потому что мне нужно было получить предложение, состоящее из одного или нескольких слов.
Затем я использовал фасетные запросы для получения предложений.
Facet.Limit = 10
Facet.Prefix = "book"
Facet.Field = "Suggester" // это поле с fieldType =«советчик» , в котором я сохранил данные
Я знаю, что он использует побочные эффекты, но, возможно, это решит вашу проблему.
Если мой или ответ Джаендры Патил не предоставляет вам решения, вы также можете взглянуть на EdgeNGramFilterFactory