Я использую SOLR наряду с NGramTokenizerFactory, чтобы помочь создать поисковые маркеры для подстрок слов
NGramTokenizer настроен с минимальной длиной слова 3
Это означает, что я могу искать, например, "unb" и затем распознать "невероятное" слово.
Однако у меня есть проблема с короткими словами как "I" и "в". Они не индексируются SOLR (я подозреваю, что это из-за NGramTokenizer), и поэтому я не могу искать их.
Я не хочу уменьшать минимальную длину слова до 1 или 2, так как это создает огромный поисковый индекс. Но я хотел бы, чтобы SOLR включал целые слова, длина которых уже ниже этого минимума.
Как я могу сделать это?
/Carsten
Прежде всего, попытайтесь понять, почему ваши слова не индексируются solr, используя "Analysis Tool"
http://localhost:8080/solr/admin/analysis.jsp
Просто введите поле и текст, который вы ищете, и посмотрите, какой анализатор фильтрует ваши краткие данные. Я предлагаю вам сделать это, потому что вы сказали, что у вас есть только "подозреваемый", и вы должны быть уверены в том, какой анализатор фильтрует ваши данные.
Тогда почему бы вам просто не скопировать термин в другое поле без этого анализатора?
Таким образом, ваши термины будут проиндексированы дважды, и будут отображаться как точное слово и как n-грамма. Тогда вам придется иметь дело с оценками двух разных полей.
Надеюсь, это вам хоть как-то помогло.
Некоторые ссылки по агрегации и атрибуту copyfield: