MySQL匹配全文

我试图用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条记录),这种搜索方法是否最适合自己,或者安装任何其他搜索引擎如Sphinx会更好吗?或者如果没有,如何显示相关结果? edit2:对于记录,尽管问题被标记为已回答,但MySQL分隔符的问题仍然存在,因此如果有人对如何逃避分隔符有任何建议,那么将会受到赞赏并且值得获得500分。我发现增加结果集的sollution是用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文档: “FULLTEXT解析器通过查找某些分隔符来确定单词的开始和结束位置;例如,”“(空格),”,“(逗号)和”。“(句点)。” 这意味着期间分界2和0.所以它不是在寻找'2.0';它正在寻找'2'和'0',而不是找到它。 WITH QUERY EXPANSION可能会导致相关的相关单词出现,从而避免了'2'和'0'在结果排名中成为单个单词的需要。最低字符也可能被强制执行。     
它返回的匹配等级是多少?匹配是否必须包含所有“单词”我的理解是它像谷歌一样工作,只需要匹配一些单词。 话虽如此,请注意添加
WITH QUERY EXPANSION
的效果,自动运行第二次搜索“相关”单词,这可能不是您键入的内容,但全文引擎认为可能与之相关。 相关文档:http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html     
“。”是什么在您的查询结果中匹配2003年。 如果您要对3个字符的文本字符串进行搜索,则应设置ft_min_word_len = 3 在你的mysql配置中,重启mysql。否则,搜索“tdi”将返回带有“TDI-”但不带“TDI”的结果,因为带有“TDI-”的行将被编入索引但单独的“TDI”则不会。 进行配置更改后,您必须在该表上重建索引。 (警告:您的索引现在可能会大得多。)     

要回复问题请先登录注册