我有一個數據庫加載了美國的geonames's data。我希望在該表上執行查詢,以便從與Google地圖功能差不多相同的單個輸入中找到最接近的匹配項(即,用戶可以輸入郵政編碼,逗號分隔的分層地址,如'Nevada,Las拉斯維加斯「或兩者的組合)。MySQL:使用單個輸入搜索多列(GoogleMaps樣式)
到目前爲止,我已經添加FULLTEXT索引表中的相關領域,並從這樣的輸入進行查詢:
SELECT * FROM places WHERE MATCH(country_code, postal_code, place_name, admin_name1, admin_code1, admin_name2, admin_code2) AGAINST (?);
在哪裏?被php腳本的輸入所取代。雖然它有點奏效,但它並沒有像預期的那樣執行,它並沒有把最相關的匹配放在第一位,並且需要一個完整的詞來開始找到匹配(我嘗試過使用通配符但變得更糟)。我也試着拆分輸入,如果它有逗號,但查詢的邏輯開始變得混亂,並且不能產生更好的執行腳本。
有沒有辦法在匹配這樣的廣義術語中搜索這個數據庫?
我通過AJAX查詢數據庫,所以我需要它開始搜索,即使這個詞還沒有完成(我正在使用jQuery的typeahead)。
提前致謝!
它的伎倆!謝謝!我閱讀了INSTR和CONCAT_WS上的文檔頁面,雖然我設法瞭解他們分別做了什麼,但我還是不太明白這是如何實現我想要的。 你能解釋一下嗎? 謝謝! – Ewajs
同樣在最終版本中,我更改了「」,以使其工作,我認爲這是預期的分隔符。 – Ewajs