Чтобы получить функциональность «содержит», вы можете использовать:
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="100" side="back"/>
<filter class="solr.LowerCaseFilterFactory" />
как индексный анализатор.
Это создаст ngrams для каждого слова, разделенного пробелами в вашем поле. Например:
"Index this!" => x, ex, dex, ndex, index, !, s!, is!, his!, this!
Как вы видите, это значительно расширит ваш индекс, но если вы сейчас введете запрос вроде:
"nde*"
он будет соответствовать «ndex», давая вам хит.
Используйте этот подход с осторожностью, чтобы ваш индекс не стал слишком большим. Если вы увеличите minGramSize или уменьшите maxGramSize, он не расширит индекс, а уменьшит функциональность «содержит». Например, установка minGramSize="3" потребует, чтобы у вас было как минимум 3 символа в вашем содержащем запросе.
person
lindstromhenrik
schedule
14.06.2011