作者bcse (Lvx ex Caelis)
看板Database
标题Re: [SQL ] 我中文 SQL 句下错了吗?
时间Mon Feb 2 01:33:33 2009
※ 引述《sweetwords (米虫三号)》之铭言:
: 这是我们搜寻功能会用到的一段 sql 句
: 我们有将 TABLE 相关栏位做了全文索引,主要想找到符合变数的资料
: SELECT * FROM `TABLE_NAME` WHERE MATCH (COLUMN_NAME) AGAINST ('中文变数');
: 非常奇怪的是,当我下中文变数是「注意力」的时候
: 可以顺利搜寻到几笔资料
: 但是当我将中文缩减成「注意」的时候
: 却完全搜寻不到任何资料 @_@"
这应该是 MySQL 没错吧?
有两个可能的原因:
1. 查询字词太短,被 MySQL 自动忽略。
2. Fulltext Search 不支援中文,原因是 MySQL 中没有中文断词机制
换句话说,它会将整句中文当成一个字,所以搜寻「注意」时搜寻不到「注意力」
另外,Fulltext Search 就我所知并没有万用字元,只有 modifier 这些特殊字元
有几个方法你可以参考:
1. 改用效能非常差的 LIKE Search
2. 用 Lucene 之类的 Fulltext Search Engine
3. 另外存一份断好词、专门用来搜寻用的栏位,你可以用 Bigram 断词法
不过 Bigram 断词法断出来会变成两个字一组,而 MySQL 预设会忽略 3 个字
以下的查询字词,你还必须改 my.ini 的设定(但看你叙述查询「注意力」查
得到东西,你应该改好这个部份了?)
你可以参考这篇
http://blog.bcse.info/wordpress-bigram-fulltext-search
「实作」的 Section
--
※ 编辑: bcse 来自: 59.115.217.101 (02/02 01:35)