Точный поиск слов в Solr

У меня есть вопрос, который тесно связан с этим вопросом.

В моей схеме у меня есть поле

<field name="text" type="textgen" indexed="true" stored="true" required="true"/>

Это дает точное совпадение, т.е. stemming инвалидов

есть = есть

Возможно ли при настройке на textgen искать другие варианты слова

например. есть = есть, ест, ест

Еда ~0 даст похожие звучащие слова, такие как мясо, ритм и т. д., но это не то, что я хочу.

Я начинаю думать, что единственный способ добиться этого - добавить еще одно поле, отличное от textgen, но если есть более простой способ, мне очень интересно это услышать.

2 ответа

Решение

С помощью copyfield Заявления это нормальный подход в Solr. поскольку stemming это ответ именно на то, что вы спрашиваете, это то, что я рекомендую вам использовать. Вы можете установить stored=false если вы беспокоитесь о размере индекса.

Вы также можете использовать lemmatisation, что является противоположностью стволовых - где вы вместо этого добавляете слова всех склоненных форм. Обычно это выполняется в поисковом запросе, например, eat в eat, eats, eating и т.п.

Третий вариант может заключаться в использовании подстановочного поиска, хотя я бы не поощрял это. Не в последнюю очередь, поскольку он обходит все настроенные фильтры схемы для целевого поля.

Если вы используете text как тип поля, то есть, есть, есть и есть все будет храниться как eat и поиск FieldName:eat найдете их всех. Если вы измените тип поля на text-gen тогда поиск FieldName:eat найдете только "есть", а не есть, есть или есть.

Другие вопросы по тегам