Поиск коротких слов с SOLR

Я использую SOLR наряду с NGramTokenizerFactory, чтобы помочь создать поисковые маркеры для подстрок слов

NGramTokenizer настроен с минимальной длиной слова 3

Это означает, что я могу искать, например, "unb" и затем распознать "невероятное" слово.

Однако у меня есть проблема с короткими словами как "I" и "в". Они не индексируются SOLR (я подозреваю, что это из-за NGramTokenizer), и поэтому я не могу искать их.

Я не хочу уменьшать минимальную длину слова до 1 или 2, так как это создает огромный поисковый индекс. Но я хотел бы, чтобы SOLR включал целые слова, длина которых уже ниже этого минимума.

Как я могу сделать это?

/Carsten

6
задан Carsten Gehling 11 June 2010 в 08:16
поделиться

1 ответ

Прежде всего, попытайтесь понять, почему ваши слова не индексируются solr, используя "Analysis Tool"

http://localhost:8080/solr/admin/analysis.jsp

Просто введите поле и текст, который вы ищете, и посмотрите, какой анализатор фильтрует ваши краткие данные. Я предлагаю вам сделать это, потому что вы сказали, что у вас есть только "подозреваемый", и вы должны быть уверены в том, какой анализатор фильтрует ваши данные.

Тогда почему бы вам просто не скопировать термин в другое поле без этого анализатора?

Таким образом, ваши термины будут проиндексированы дважды, и будут отображаться как точное слово и как n-грамма. Тогда вам придется иметь дело с оценками двух разных полей.

Надеюсь, это вам хоть как-то помогло.

Некоторые ссылки по агрегации и атрибуту copyfield:

Индексирование данных в нескольких полях

Использование тега copy field

6
ответ дан 17 December 2019 в 02:24
поделиться