#search #full-text-search #sphinx #stemming #django-sphinx
#Поиск #полнотекстовый поиск #sphinx #формирование #django-sphinx
Вопрос:
У меня есть сервер sphinx для индексации базы данных mysql для приложения django. Мой поиск работает нормально, но мой контент включает медицинские слова / фразы. Так, например, мне нужно, чтобы поиск по «dvt» также соответствовал «глубокому венозному тромбозу» и даже «тромбозу глубоких вен». Я просмотрел документацию и вижу опцию для «словоформы» и «морфология». Какие из них (или что-то еще) мне следует использовать? Кроме того, что будет работать в обратном направлении? т.е. поиск по «глубокому венозному тромбозу» / «deep ven thrombosis» будет соответствовать «dvt».
Кроме того, я был бы признателен за несколько советов о том, как их настроить, поскольку я новичок в sphinx в целом.
Ответ №1:
Вам нужно будет предоставить свой собственный список синонимов слов / терминов, которые будут использоваться при расширении запроса.
Поскольку Sphinx в настоящее время не поддерживает расширение синонимов в запросах, вам нужно будет изменить запрос на основе вашего списка синонимов, прежде чем отправлять его в поисковую систему.
Итак, используя ваш пример:
-
Пользовательские запросы на: ‘процедуры устранения ТГВ’.
-
Сервер получает запрос и проверяет каждый термин по списку синонимов.
-
Сервер находит соответствие и добавляет ‘тромбоз глубоких вен’ в запрос.
-
Сервер отправляет в поисковую систему новый расширенный запрос «Процедуры устранения тромбоза глубоких вен ТГВ».
Наконец, если конечный модуль, встроенный в Sphinx, выполняет свою работу, вам не нужно поддерживать ‘venous’ и ‘вена’ как отдельные термины, поскольку они оба должны вести к одному и тому же термину. Если это не так, возможно, вам потребуется выполнить дополнительную предварительную обработку для обработки слов, специфичных для вашего корпуса (медицинские термины).