我遇到了问题,我需要搜索MyISAM FullText字段。
我需要搜索什么?
ie. "avrir"
ie. "dividdos"
ie. "petacular"
我的领域有什么?
ie. "abrir"
ie. "divididos"
ie. "espectacular"
正如您在示例中所看到的,用户可以在搜索中输入错误的单词,我需要能够选择最匹配的单词。
有没有人知道我该怎么做?
我读到了“sphinx”,但我找不到这个问题的解决方案。
答案 0 :(得分:1)
你可以下载levenshtein udf
有关levenshtein的信息,请参阅:http://en.wikipedia.org/wiki/Levenshtein_distance
下载位置:
http://www.joshdrew.com/mysql_levenshtein_udf-1.0.tar.gz
这将允许您安装一个UDF,它将在MySQL中添加一个levenshtein函数,您可以在查询中使用它。 您可以使用.gz文件中的指令编译UDF on linux 。
以下是编译后如何安装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;
答案 1 :(得分:0)
MySQL的SOUNDEX()函数可能会对您有所帮助,但它不能用FULLTEXT
索引中的一串文本神奇地工作。
Levenshtein距离也许值得一看。
答案 2 :(得分:0)
我不确定你是否能达到你想要的效果,而@Johan建议的那样。反正。
如果您想使用sphinx,您要搜索的功能称为
<强>词干强>
有关详细信息,请参阅Sphinx文档
http://sphinxsearch.com/docs/current.html
文档
中说明了以下内容我们目前在工作中使用Sphinx并且非常满意。
需要一些时间来习惯并理解它,但一旦你得到它 它的地狱比mysql全文搜索快得多。
此致