是否可以在MySql中阻止全文匹配查询

时间:2010-08-25 20:41:47

标签: mysql

我正在尝试使用通配符来传递单词的词干,作为MySql中全文搜索的一部分。我宁愿使用match ...来获得性能优势,而不是类似的查询。

我发现这篇文章听起来好像可以做到这一点: MySQL fulltext with stems

......但我无法让它为我工作。

我的数据如下:

table name: "rxnorm_brands"
step_medname              bn_name
Amoxicillin               Wymox
Amoxicillin-Clavulanate   Augmentin

此查询有效但使用“like”:

select `step_medname`, `bn_name`
from `rxnorm_brands`
where (`bn_name` like 'Amox%' or `step_medname` like 'Amox%');

我想使用此查询,但它不返回任何内容:

select `step_medname`, `bn_name`
from `rxnorm_brands`
where MATCH (`bn_name`, `step_medname`) AGAINST ('Amox*');

我在bn_name和step_medname上有一个全文索引。我究竟做错了什么?或者这可以不做?

2 个答案:

答案 0 :(得分:2)

这可以使用IN BOOLEAN MODE完成,请参阅:http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html

所以你的查询将成为:

select `step_medname`, `bn_name`
from `rxnorm_brands`
where MATCH (`bn_name`, `step_medname`) AGAINST ('Amox*' IN BOOLEAN MODE);

但请注意,使用BOOLEAN MODE匹配时,行匹配或不匹配 - 结果不再按照相关性排序,就像通​​常的FULLTEXT搜索一样。

答案 1 :(得分:-1)

RxNorm API现在有一个方法可以匹配只与RxNorm概念大致匹配的文本。见http://rxnav.nlm.nih.gov/RxNormAPI.html#label:23