Как обрабатывать словоформы в поиске sphinx

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

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


person rsp    schedule 05.06.2011    source источник


Ответы (1)


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

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

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

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

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

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

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

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

person Rob Raisch    schedule 09.06.2011