Точный поиск слов в 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
найдете только "есть", а не есть, есть или есть.