包含多个关键字的全文搜索

时间:2016-05-26 11:12:33

标签: mysql full-text-search

运行此查询后,我得到错误的结果:

select 
    a.userid as userid,
    b.CompanyProfile as cp,  
    MATCH ( b.fldsearch ) AGAINST ( '+(computers computer) +(hardawre hardawres)' IN BOOLEAN MODE ) as rank
from users a , companymaster b
where a.userid=b.userid and MATCH ( b.fldsearch ) 
AGAINST ('+(computers computer) +(hardawre hardawres)' IN BOOLEAN MODE ) 

我只需要那些包含任何上述关键词组合的结果意味着"计算机","计算机"与" hardawre"," hardawres"

我从上面的查询得到的结果只包含计算机或计算机但不包含硬件或硬件

1 个答案:

答案 0 :(得分:0)

您的查询看起来很好,您的问题很可能与它无关。您可能在测试期间和使用innodb表时遇到此问题。

innodb的全文索引有一点不直观的行为。根据{{​​3}}

  

InnoDB全文索引交易处理

     

InnoDB FULLTEXT索引由于其缓存和批处理行为而具有特殊的事务处理特性。具体来说,FULLTEXT索引的更新和插入在事务提交时处理,这意味着FULLTEXT搜索只能看到已提交的数据。

所以,如果你正在工作,例如使用工作台,您只需要commit;数据(或使用带自动提交的命令),然后添加新的(测试)单词以将其添加到全文索引中,以便查询可以看到它们。