MySQL布尔部分搜索

时间:2011-09-20 20:03:33

标签: mysql search partial

我已经搜索了很多,之前我曾经有过类似的工作,但我无法理解为什么这不会产生我期望的结果。

假设我在名称,制造商,型号或描述中有'test6',我希望搜索'tes',但使用下面的查询它不会像我期望的那样返回。

我也试过'测试'用'反对'(测试'+在BOOLEAN模式等等。任何帮助将不胜感激。

ALTER TABLE productinfo ADD FULLTEXT(name, manufacturer, model, description);

SELECT id, name,category_id, price, manufacturer, model, shortdescription, 
       description,stockqty,shippingbase,shippingcost, buyitnow,auctionitem, 
       MATCH (name, manufacturer, model, description) 
       AGAINST('tes'* IN BOOLEAN MODE) as  score 
FROM productinfo 
     WHERE MATCH (name, manufacturer, model, description) 
        AGAINST('tes'* IN BOOLEAN MODE) ORDER BY score DESC

已解决,注意:经过一些研究后,它是一个星号,需要在搜索词之后(在本例中为'tes')所以AGAINST('tes'*在BOOLEAN MODE中);

1 个答案:

答案 0 :(得分:0)

此查询遇到两个问题。

  1. 全文搜索要求最小字长为4(see the manual
  2. 全文搜索仅查找整个单词。要匹配部分单词,您需要将星号放在引号AGAINST('test*' IN BOOLEAN MODE)中,或者您可以使用正则表达式或locate()