MySQL Match全文

扫码查看

我正在尝试使用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/

10-16 15:04
查看更多