Как использовать NGramTokenizerFactory или NGramFilterFactory? - PullRequest
5 голосов
/ 12 января 2011

В последнее время я изучаю, как хранить и индексировать с помощью Solr. Я хочу сделать поиск facet.prefix. С помощью маркера пробелов «Где ты» будет разделен на три слова и проиндексирован. Если я буду искать facet.prefix = "где", результат не будет возвращен.

Я заглянул в Google и обнаружил, что NGramFilterFactory может мне помочь. Но когда я применил эту фабрику фильтров, я обнаружил, что результатом является «w, h, e, ..., wh, ..», которое разделяет предложение по символам, а не по слову токена.

Я использую параметры maxGramSize и minGramSize, установленные в 1 и 3. Правильно ли работает NGramFilterFactory? Должен ли я добавить некоторые другие параметры? Есть ли какие-нибудь другие фабрики фильтров, которые могут мне помочь?

Спасибо!

1 Ответ

1 голос
/ 12 января 2011

Фасеты следует применять только к нетексированным полям, таким как строки. если вы хотите, чтобы результаты отображались для «что есть», вообще не используйте токенизатор для этого поля (или директиву copyField). Я предполагаю, что вы хотите использовать facet.prefix для автозаполнения. Вы можете сделать это, посмотрите здесь .

для ngramtokenizer проверьте это .

...