作者sweetwords (米虫三号)
看板Database
标题Re: [SQL ] 我中文 SQL 句下错了吗?
时间Mon Feb 2 16:15:02 2009
※ 引述《bcse (Lvx ex Caelis)》之铭言:
: ※ 引述《sweetwords (米虫三号)》之铭言:
: : 这是我们搜寻功能会用到的一段 sql 句
: : 我们有将 TABLE 相关栏位做了全文索引,主要想找到符合变数的资料
: : SELECT * FROM `TABLE_NAME` WHERE MATCH (COLUMN_NAME) AGAINST ('中文变数');
: : 非常奇怪的是,当我下中文变数是「注意力」的时候
: : 可以顺利搜寻到几笔资料
: : 但是当我将中文缩减成「注意」的时候
: : 却完全搜寻不到任何资料 @_@"
: 这应该是 MySQL 没错吧?
yes :>
: 有两个可能的原因:
: 1. 查询字词太短,被 MySQL 自动忽略。
: 2. Fulltext Search 不支援中文,原因是 MySQL 中没有中文断词机制
: 换句话说,它会将整句中文当成一个字,所以搜寻「注意」时搜寻不到「注意力」
: 另外,Fulltext Search 就我所知并没有万用字元,只有 modifier 这些特殊字元
: 有几个方法你可以参考:
: 1. 改用效能非常差的 LIKE Search
哈!这种我也有想过,可是其实我不太懂多大的资料量用 like 处理起来
速度才真的会有所影响 @_@"
现在研所老板 project 给我们的资料量大概 30 万笔左右
: 2. 用 Lucene 之类的 Fulltext Search Engine
partner 之前有找到这款,不过好像有些 java + 断字的技术 @_@?
不知道会不会搞得太复杂 ._."
: 3. 另外存一份断好词、专门用来搜寻用的栏位,你可以用 Bigram 断词法
: 不过 Bigram 断词法断出来会变成两个字一组,而 MySQL 预设会忽略 3 个字
: 以下的查询字词,你还必须改 my.ini 的设定(但看你叙述查询「注意力」查
: 得到东西,你应该改好这个部份了?)
: 你可以参考这篇 http://blog.bcse.info/wordpress-bigram-fulltext-search
: 「实作」的 Section
嗯,已经有做调整了 :>
像是「资料」去找查得到东西,只是没办法进一步查到「资料库」去查该有的东西
可是这边对於断字有个观念点我不太懂
很多的断字方法是针对去查的资料作断字的处理?
亦或是针对你下的查询字去做断字的处理呢?
如果是针对查询字去做处理,我不懂的方面是
「资料」两个字再怎麽拆好像也无法拆到「资料库」三个字 @_@"
如果是针对查询的资料去做处理的话,
每一笔资料查询这样去做不是很费工吗 @_@?
大大上面提到的作法难道是将断好的字词先存到资料库 @_@?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.74.176
1F:推 bcse:要多一个栏位存断好的字、查询时也要先断好字再查 02/02 19:39
2F:推 bcse:当然你也可以考虑修改或扩充 MySQL,让它能正确为中文建索引 02/02 19:52
3F:→ sweetwords:有扩充或是修改 mysql 的相关资讯吗 ._.? 02/02 20:50