Вы можете использовать NGramFilter (не токенизатор) в цепочке анализа для текстового поля - он разделит текст на отдельные токены для каждой подстроки представленного текста. Вы можете предоставить минимальную/минимальную длину подстрок, позволяя вам настроить длину генерируемых маркеров.
Если вход только одну строки вы хотите искать подстроки, используйте KeywordTokenizer
- это будет держать ввод строки в качестве одного маркеров, который затем используются для generate the substrings with the NgramFilter:
<filter class="solr.NGramFilterFactory"/>
Значения по умолчанию значения для мин/макс составляет 1 и 2, что дает (из примеров):
In: "four score"
Tokenizer to Filter: "four", "score"
Out: "f", "o", "u", "r", "fo", "ou", "ur", "s", "c", "o", "r", "e", "sc", "co", "or", "re"
В вашем случае вся строка будет храниться как одно значение, так что вы должны были бы «четыре балла» вместо для разделения токенов.
Пример, приведенный для значений 1/4 в примере в вики, в настоящее время неверен (кажется, он был скопирован с EdgeNGramFilter), поэтому игнорируйте это.
Вам нужно настроить значения min/max в зависимости от того, как вы собираетесь запрашивать контент. Если вы никогда не будете запрашивать подстроку длиной менее трех, используйте 3 как минимальное значение.
какие запросы вы попробовали? – Mysterion
Вы пробовали использовать NGramFilter? – MatsLindh
Ваш вопрос очень неясен. Какой текст вы индексируете и пытаетесь найти (ABCDEF)? И каковы поисковые строки, которые вы ищете с помощью (A, EF и т. Д.)? –