Может ли Solr точно искать ключевые слова? - PullRequest
1 голос
/ 24 ноября 2011

Например: я хочу выполнить поиск «поддержка», я надеюсь, что он вернет только результаты, содержащие «поддержку», и НЕ вернет результат, содержащий «поддержку» или любые другие соответствующие совпадения.это можно реализовать, как это?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 24 ноября 2011

Да, если вы выполняете поиск по неанализированному типу поля, совпадения являются точными.В схеме Solr по умолчанию неанализированный тип поля называется «string» (класса «solr.StrField»)

EDIT: это зависит от того, что вы подразумеваете под «точно».Если ваше поле имеет значение «служба поддержки», а ваш запрос - «поддержка», должно ли оно совпадать?

  • Если вы ответили «да», то вам следует заняться настройкой stemming.
  • Если ваш ответ «нет», т. Е. Запрос должен соответствовать значению поля и ничего больше, тогда вам следуетиспользуйте строковый (то есть неанализированный) тип поля.

Кроме того, если ваш запрос «поддерживает» и значение поля «Поддерживает», должно ли оно совпадать?

  • Если вы ответите «да», то вам следует использовать LowerCaseFilterFactory (вы не можете сделать это для строкового типа поля, вам придется переключиться на тип текстового поля).
  • Если вы ответите «нет», тогдахорошо, чтобы использовать строковый тип поля.

В итоге, конвейер анализа текста Lucene / Solr очень настраиваем, посмотрите справочную документацию для справки всех доступныхопции.

3 голосов
/ 24 ноября 2011

То, что вы описываете, называется стеммингом.Есть еще один почти идентичный вопрос о переполнении стека, проверьте его: Решите точный поиск слова Вам нужно будет переиндексировать и отключить основание в конфигурации.Я не верю, что это возможно сделать во время запроса, так как то, что хранится в вашем индексе, является версией слова.В вашем случае «поддержка» сохраняется в индексе, даже если отображается «поддержка».Это должно помочь вам начать Как настроить stemming в Solr?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...