前缀与MySQL索引匹配:LIKE word%vs MATCH'word *'用于搜索结果自动完成

时间:2012-09-04 07:54:00

标签: mysql search autocomplete full-text-search

我正在尝试在两个选项之间做出决定,以便与MySQL实现名称(50百万选项)的前缀匹配。用途是搜索结果的自动填充功能。困境在于建立:

  1. VARCHAR上的索引并执行LIKE'word%'查询
  2. FTS(全文搜索)索引并执行MATCH'word *'查询
  3. 对于这种情况哪个更好?我是否应该考虑额外的FTS功能,以便自动建议自动完成名称?

1 个答案:

答案 0 :(得分:3)

FTS和前缀匹配是两回事。所以答案取决于你的实际要求。

您是否需要返回与条件column LIKE 'word%'完全匹配的所有结果的列表?特别是字符串必须以您要查找的单词开头。

全文搜索根据相关性进行匹配。它并不总能给你匹配特定字符串的东西。它确实是词干,它有停用词,如果一个词太常见,它会省略结果。

我认为在这种情况下,最好的答案是“全文搜索并不能完全按照您的想法进行操作”因此,如果您对匹配有精确的要求,您应该坚持使用的方法。