Сфинкс и словоформы - PullRequest
       25

Сфинкс и словоформы

3 голосов
/ 17 февраля 2010

Как я мог заставить Сфинкса распознавать «авто» и «автомобиль» как похожие слова?

Давайте представим, у меня есть три записи базы данных

Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.

Вот примеры запросов и их результаты ...

query: car
result: Mary don't like to drive car.
-------------------------------------
query: auto
result: Andy likes to drive auto.
-------------------------------------
query: automobile
Bob is going to buy automobile.

.. но я хочу, чтобы сфинкс вернулся ...

query: car
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.
-------------------------------------
query: auto
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.
-------------------------------------
query: automobile
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.

Я знаю, что у Сфинкса есть слова, но что я должен поместить в словарь стоп-слов, чтобы Сфинкс так думал?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

все, что вам нужно сделать, это предоставить sphinx правильно отформатированный текстовый файл wordforms в вашем файле .conf.

документация найдена здесь: http://www.sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms

auto > car
automobile > car
four-wheeled-vehicle-intended-for-public-roads > car
cars > car
0 голосов
/ 16 апреля 2015

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

Первоначально ваш файл "wordforms.txt" должен содержать их в следующем списке:

gear > gear
geared > gear
gearing > gear
gears > gear
……
leverage > leverage
leveraged > leverage
leverages > leverage
leveraging > leverage

Это означает, что изначально эти два слова не связаны. Чтобы это исправить, вы должны изменить содержимое «wordforms.txt» следующим образом:

gear > leverage
geared > leverage
gearing > leverage
gears > leverage
……
leveraged > leverage
leverages > leverage
leveraging > leverage

Эта правка связывает их (и все их формы). После того, как вы отредактируете файл «wordforms.txt», вы должны сохранить его и переиндексировать ваши индексы, чтобы применить изменения.

Теперь, когда вы будете искать «зацепление» или «рычаг», ваши результаты будут содержать оба слова вместе со всеми их морфологическими формами.

...