Морфологично търсене в база данни, 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.