【发布时间】:2010-12-10 01:44:23
【问题描述】:
我正在尝试使用 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
这是不正确的,因为本例中没有“2.0”。
可能是什么?
编辑:另外,由于这可能是一个大型数据库(预计最多 500.000 条记录),这种搜索方法是否最适合自己,或者安装任何其他搜索会更好像斯芬克斯这样的引擎?或者如果没有,如何显示相关结果?
edit2:作为记录,尽管问题被标记为已回答,但 MySQL 分隔符的问题仍然存在,因此如果有人对如何转义分隔符有任何建议,我们将不胜感激并值得500 点的风险。我发现增加结果集的解决方案是将 WITH QUERY EXPANSION 替换为 IN BOOLEAN MODE,使用运算符强制引擎获取我需要的单词,例如:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'+passat +2.0 +tdi' IN BOOLEAN MODE
)
它根本没有解决,但至少结果的相关性发生了显着变化。
【问题讨论】:
标签: mysql match full-text-search