簡體   English   中英

mysql全文搜索,部分匹配

[英]mysql fulltext search with partial matches

我有一張包含美國所有城市的表格。 結構和示例行如下所示:

| 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仍返回有效結果。

兩步搜索怎么樣。 首先對RIGHT(entry,2)進行拆分,然后首先僅針對State列搜索匹配項。 如果匹配,則刪除2個字符並在其余字符上搜索城市。 在剝離之后,繼續使用現有代碼。

如果未找到狀態,則直接進入現有代碼。

在實踐中,如果發現狀態會同時剝奪正確的','和結尾空格,我也會采取措施。

亞諾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM