2

我正在尝试在两个选项之间做出决定,以使用 MySQL 实现名称的前缀匹配(5000 万个选项)。该用法用于搜索结果的自动完成。两难在建筑之间:

  1. VARCHAR 上的索引并执行 LIKE 'word%' 查询
  2. FTS(全文搜索)索引并执行 MATCH 'word*' 查询

对于这种情况,哪个更好?我是否应该考虑为这种自动建议自动完成名称的额外 FTS 功能?

4

1 回答 1

4

FTS 和前缀匹配是两个不同的东西。所以答案取决于你的实际要求是什么。

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

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

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

于 2012-09-04T08:03:52.630 回答