我正在尝试使用通配符来传递单词的词干,作为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上有一个全文索引。我究竟做错了什么?或者这可以不做?
答案 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