我正在尝试使用mysql进行全文搜索,以匹配字符串。问题在于它首先返回奇数结果。
例如,字符串“passat 2.0 tdi”:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'passat 2.0 tdi' WITH QUERY EXPANSION
)
返回此作为第一个结果(其他都很好):
Volkswagen Passat Variant 1.9 TDI- ANO 2003
wich不正确,因为在此示例中没有“2.0”。
会是什么呢?
编辑:另外,由于这可能是一个大型数据库(预期多达500.000条记录),因此此搜索方法本身是否是最佳选择,还是最好安装其他任何搜索引擎(如Sphinx)?否则,如何显示相关结果?
edit2 :记录下来,尽管已将问题标记为已回答,但MySQL分隔符仍然存在问题,因此,如果有人对如何转义分隔符提出建议,将不胜感激,并且值得500分。我发现增加结果集的解决方案是用IN BOOLEAN MODE替换WITH QUERY EXPANSION,使用运算符强制引擎获取我需要的单词,例如:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'+passat +2.0 +tdi' IN BOOLEAN MODE
)
它根本解决不了,但至少结果的相关性发生了显着变化。
最佳答案
默认情况下,我相信mysql只索引和匹配4个或更多字符的单词。您还可以尝试逃避期限吗?可以忽略此,也可以将其用作停止字符。
关于MySQL Match全文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4404932/