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

#search #full-text-search #sphinx #stemming #django-sphinx

#Поиск #полнотекстовый поиск #sphinx #формирование #django-sphinx

Вопрос:

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

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

Ответ №1:

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

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

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

  • Пользовательские запросы на: ‘процедуры устранения ТГВ’.

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

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

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

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