Поиск похожих слов в MySql - PullRequest
2 голосов
/ 04 мая 2011

У меня проблема, мне нужно выполнить поиск в полнотекстовом поле MyISAM.

Что мне нужно искать?

ie. "avrir"
ie. "dividdos"
ie. "petacular"

Что у меня есть в моем поле?

ie. "abrir"
ie. "divididos"
ie. "espectacular"

Как видно из примеров, пользователь может ввести в поиск неверное слово, и мне нужно иметь возможность выбрать наиболее подходящее слово.

У кого-нибудь есть идеи, как мне это сделать?это?

Я читал о " sphinx ", но я не нашел решения этого вопроса с помощью.

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Вы можете скачать levenshtein udf
Для получения информации о Левенштейне см .: http://en.wikipedia.org/wiki/Levenshtein_distance

В http://www.joshdrew.com/

Местоположение загрузки:
http://www.joshdrew.com/mysql_levenshtein_udf-1.0.tar.gz

Это позволит вам установить UDF, который добавит в MySQL функцию levenshtein, которую вы можете использовать в своих запросах.Вы можете скомпилировать UDF в linux , используя инструкцию в файле .gz.

Вот как установить UDF после его компиляции.

>mv mysqllevenshtein.so /usr/lib

Затем запустите mysql

>mysql -uroot -pPASS

в mysql

mysql> use DATABASE

База данных изменена

mysql> CREATE FUNCTION levenshtein RETURNS INT SONAME 'mysqllevenshtein.so';

select levenshtein(word1,word2) as dist 
from book where ETC........... 
order by dist asc 
limit 0,10;
0 голосов
/ 04 мая 2011

Я не уверен, что вы можете добиться того, чего хотите, с тем, что предложил @Johan. В любом случае.

Если вы хотите использовать sphinx, функция, которую вы ищете, называется

* вытекающие 1006 *

см. Документ Сфинкса для более подробной информации

http://sphinxsearch.com/docs/current.html

В документации указано следующее

  • Сфинкс поддерживает стемминг (стеммеры для английского, русского и чешского языков встроенный; и родословные для французского, испанского, португальского, итальянского, Румынский, немецкий, голландский, шведский, норвежский, датский, финский, Венгерский, доступны третьим участник библиотеки либстемеров);

В настоящее время мы используем Сфинкса на работе и очень довольны им.

Требуется некоторое время, чтобы привыкнуть и понять это, но как только вы получили Это намного быстрее, чем полнотекстовый поиск mysql.

Привет

0 голосов
/ 04 мая 2011

Функция MySQL SOUNDEX () может помочь вам, но она не будет работать волшебным образом с большим объемом текста в индексе FULLTEXT.

Расстояние Левенштейна тоже может стоить посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...