Как мне обрабатывать словоформы в поиске сфинксов - PullRequest
1 голос
/ 06 июня 2011

У меня есть сервер sphinx для индексации базы данных mysql для приложения django. Мой поиск работает нормально, но мой контент включает в себя медицинские слова / фразы. Так, например, мне нужен поиск «dvt», чтобы сопоставить его с «тромбозом глубоких вен» и даже «тромбозом глубоких вен». Я просмотрел документацию и увидел опцию «словоформы» и «морфология». Какой из них (или что-то еще) я должен использовать? Кроме того, что будет работать в обратном направлении? т. е. поиск «тромбоз глубоких вен» / «тромбоз глубоких вен» будет совпадать с «dvt».

Кроме того, я был бы признателен за некоторые советы о том, как их настроить, поскольку я новичок в сфинксе в целом.

1 Ответ

1 голос
/ 09 июня 2011

Вам нужно будет предоставить свой собственный список синонимов слова / термина для использования в расширении запроса.

Поскольку Sphinx в настоящее время не поддерживает раскрытие синонимов в запросах, вам необходимо обработать запрос на основе вашего списка синонимов, прежде чем отправлять его в поисковую систему.

Итак, используя ваш пример:

  • Пользователь запрашивает: 'процедуры восстановления dvt'.

  • Сервер получает запрос и проверяет каждый термин на соответствие своему списку синонимов.

  • Сервер находит совпадение и добавляет к запросу «тромбоз глубоких вен».

  • Сервер отправляет в поисковую систему новый расширенный запрос «Процедуры лечения тромбоза глубоких вен глубоких вен».

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

...