是否有可能在MySql中完成全文匹配查询

问题描述:

我试图使用通配符将单词的词干作为MySql中的全文搜索的一部分来传递。我宁愿使用match ...反对性能优势而不是类似的查询。是否有可能在MySql中完成全文匹配查询

我发现这个职位这使得它听起来觉得这是可以做到: MySQL fulltext with stems

...但我不能让它为我工作。

我的数据是这样的:

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

这个查询工作,但使用 “赞”:

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上有全文索引。我究竟做错了什么?或者可以这样做吗?

这可以使用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); 

但要注意与布尔模式匹配,行匹配或不 - 结果可以不再受相关性,如他们可以用正常的FULLTEXT有序搜索。

+0

谢谢!这对我有效。 – Marvin 2010-08-25 21:02:39

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