2011-05-04 59 views
2

我遇到了問題,我需要搜索MyISAM FullText字段。在MySql上搜索類似的詞

我需要搜索什麼?

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

我在我的領域有什麼?

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

正如你在例子中看到,用戶可以把一個錯誤的詞搜索,我需要能夠選擇最匹配的詞。

有沒有人有一個想法我該怎麼做?

我讀了關於「sphinx」,但我沒有找到這個問題的解決方案。

+0

我如何s sphinx:http://sphinxsearch.com/不適合你,它聽起來像是完美的解決方案,請閱讀:http://www.ibm.com/developerworks/library/os-php-sphinxsearch/ – Johan 2011-05-04 16:36:18

+0

作爲MySql的soundex使用PHP的sphinxsearch不起作用,因爲它只使用俄語和英語形態,謝謝。 – Mallok 2011-05-04 16:49:42

回答

0

MySQL的SOUNDEX()函數可能會對您有所幫助,但它不會在FULLTEXT索引中出現一連串文字。

Levenshtein距離也許值得一看。

+0

是的,我一直在嘗試使用SOUNDEX(),但現在只能使用Enlish,而且我需要使用西班牙語,反正謝謝。 – Mallok 2011-05-04 16:47:50

0

我不知道你是否可以達到你想要的,用@Johan的建議。無論如何。

如果你想使用獅身人面像您正在尋找被稱爲

制止

看到獅身人面像文檔瞭解更多詳情

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

功能中聲明如下該文件

  • 斯芬克斯支持詞幹(英語,俄語和捷克語的詞幹爲 內置;以及法語,西班牙語,葡萄牙語,意大利語的詞幹, 羅馬尼亞語,德語,荷蘭語,瑞典語,挪威語,丹麥語,芬蘭語, 匈牙利語,可通過建立第三方 party libstemmer library);

我們目前在工作中使用獅身人面像,並且非常滿意。

需要一些時間去適應它並理解它,但是一旦你得到了 它的地獄要比mysql全文搜索快得多。

問候

1

你可以下載一個萊文斯坦UDF
對於信息關於萊文斯坦看到:http://en.wikipedia.org/wiki/Levenshtein_distance

http://www.joshdrew.com/

下載地點:
http://www.joshdrew.com/mysql_levenshtein_udf-1.0.tar.gz

這將允許你安裝一個將在MySQL中添加levenshtein函數的UDF在你可以在你的查詢中使用。 您可以使用.gz文件中的指令在Linux上編譯UDF

下面介紹如何在編譯完成後安裝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

感謝您的建議,它似乎會爲我的問題正常工作。 – Mallok 2011-05-04 18:21:42