Морфологично търсене в база данни, PHPClub - PHP Developers Club

Търсене в морфологична база данни

Как да реализираме морфологично търсене в базата данни? Може би някой знае?

popoff.donetsk.ua
Напреднал начинаещ

Stemmer Porter: http://snowball.tartarus.org/algorithms/russian/stemmer.html

Някъде имаше реализации в PHP.

Речникът на Лебедев (ispell) може да бъде преведен в база данни за удобство и бързина и да се търси в получената таблица. [sql]SELECT sp1.form FROM spell sp1, spell sp2 WHERE sp1.word=sp2.word AND sp2.form='$1'[/sql] вземете това, което искате. Таблицата е 80 MB, 1 399 201 записа.

Напреднал начинаещ

Няма много в ispell, така че е по-добре да го поддържате с евристичен генератор за край. Нека този генератор измисля несъществуващи думи - така или иначе няма да ги намерите в сайта.

Ето http://www.managee.ru/ru/search/ - тук имам търсене на ispell + изобретател на окончания за несъществуващи думи. Има изход за отстраняване на грешки на генерираната MySQL заявка

popoff.donetsk.ua

Опитайте подходящо търсене. Помага ми:

SELECT *, MATCH (firstName, lastName) AGAINST('*' IN BOOLEAN MODE) AS rel FROM users WHERE MATCH (firstName, lastName) AGAINST('*' IN BOOLEAN MODE) ORDER BY rel DESC

Полетата firstName и lastName в таблицата на базата данни трябва да са fullText. Не е задължително да са две полета, можете да имате едно или повече.

Слалом+Да? И аз не търсих "Иванов", а търсих "Иванов". Имам ли "Иванов"?

Всичко е ясно за сортирането, ясно е написано в ръководството за MATCH.