【发布时间】:2012-04-22 23:59:06
【问题描述】:
我有一个 MySQL MyISAM 表,其中包含描述机场的条目。此表包含 3 个 varchar 列 - 代码、名称和标签。
code 是指机场的代码(如 JFK 和 ORD),name 是指机场的名称(John F Kennedy 和 O'Hare),标签指定与机场相关联的标签的分号分隔列表(如 NYC ;纽约;和芝加哥;)。
我需要能够通过代码、名称或标签来查找机场(用于自动完成),因此我在(代码、名称、标签)上设置了 FULLTEXT 索引。
到目前为止,我遇到了两个 FULLTEXT 问题,使我无法使用它:
1. 没有办法进行部分匹配——只有后缀匹配(这是真的吗?)
2. 在要匹配的术语中指定句点 ('.') 时,匹配的工作方式会有所不同。我假设这个时期正在以一种特殊的方式被解析。例如,在 N.Y.C 上进行 FULLTEXT 搜索将不会返回 JFK,尽管在 New York 上进行相同的搜索会
有没有办法克服这些障碍?否则,我应该查看like 匹配,还是完全不同的存储引擎?谢谢!
【问题讨论】:
-
全文是为自然语言设计的。它在代码或缩写上表现不佳。我的建议是你将这两种方法结合起来。
-
是的。 FULLTEXT UNION like 似乎效果最好。谢谢!
标签: mysql partial full-text-search