我有一张包含所有美国城市的表格。结构和示例行看起来像:
| id | zip | state | city | lat | lng |
------------------------------------------------------------
| 29431 | 82732 | WY | Wright | 43.829349 | -105.532327 |
目标是构建AJAX autocomplete
搜索,以检查针对zip
,state
或city
的输入。这些是我做过的一些搜索和相应的结果:
- 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
仍然返回有效结果。
答案 0 :(得分:0)
两步搜索怎么样?首先进行RIGHT(条目2)的拆分,首先只搜索State列以进行匹配。如果匹配,则删除2个字符并在剩余字符上搜索城市。在剥离后,继续使用现有代码。
如果未找到任何状态,请直接转到现有代码。
在实践中,如果发现状态剥离正确的','和结束空格,我也会采取步骤。
阿诺