部分匹配的mysql全文搜索

时间:2014-02-07 03:56:12

标签: mysql full-text-search

我有一张包含所有美国城市的表格。结构和示例行看起来像:

| id    | zip   | state | city   | lat       |  lng        |
------------------------------------------------------------
| 29431 | 82732 | WY    | Wright | 43.829349 | -105.532327 |

目标是构建AJAX autocomplete搜索,以检查针对zipstatecity的输入。这些是我做过的一些搜索和相应的结果:

- wright
// returns all records containing wright as city

- 82732
// returns a single matching record

- wrig
// returns all records that partially match

- wright wy
// returns nothing

所以最后一个查询什么也没有返回,但是我需要它来返回唯一匹配的记录。

使用的搜索查询,其中+*的条款由PHP生成:

MATCH (zip, state, city) AGAINST ('+wright* +wy*' IN BOOLEAN MODE)

那么我该如何修改此搜索,以便wright wy之类的搜索只返回完整的匹配记录,NOT包括结果中的其他位置?

如果条款的顺序无关紧要,那也不错,但根本不需要。即wy wright仍然返回有效结果。

1 个答案:

答案 0 :(得分:0)

两步搜索怎么样?首先进行RIGHT(条目2)的拆分,首先只搜索State列以进行匹配。如果匹配,则删除2个字符并在剩余字符上搜索城市。在剥离后,继续使用现有代码。

如果未找到任何状态,请直接转到现有代码。

在实践中,如果发现状态剥离正确的','和结束空格,我也会采取步骤。

阿诺