[英]mysql fulltext search with partial matches
我有一張包含美國所有城市的表格。 結構和示例行如下所示:
| 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
仍返回有效結果。
兩步搜索怎么樣。 首先對RIGHT(entry,2)進行拆分,然后首先僅針對State列搜索匹配項。 如果匹配,則刪除2個字符並在其余字符上搜索城市。 在剝離之后,繼續使用現有代碼。
如果未找到狀態,則直接進入現有代碼。
在實踐中,如果發現狀態會同時剝奪正確的','和結尾空格,我也會采取措施。
亞諾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.