Mysql

SQL MATCH AGAINST 帶有空格的不完整字元串

  • December 6, 2015

我有地點的 MySQL 數據庫,我想使用 MATCH (…) AGAINST (…) 函式來查找具有兩部分名稱的地點,例如紐約。這是一個問題,因為與語法的匹配會將名稱的第二部分辨識為“或”條件。

SELECT * FROM places WHERE MATCH (…) AGAINST (‘New York’)

將匹配包含單詞“New”或單詞“York”的列。

如何將位置指定為要匹配的一個字元串,或者有沒有辦法在查詢中轉義空格?

如果沒有解決方案,那麼如果我只從包含兩部分名稱的數據庫中獲取結果,我就會接受該問題的解決方法。

**編輯:**我將它用於使用者鍵入的程序,並查詢我的數據庫以獲取預測使用者可能鍵入的內容的建議,因此我需要匹配一個可能不完整的字元串。

如果您想使用Full-Text Search,那麼為了獲得精確的片語匹配,似乎可以進行布爾全文搜尋,將術語New York括在雙引號中,因此:

SELECT * FROM places WHERE MATCH (field) AGAINST ('"New York"' IN BOOLEAN MODE);

但是,如果您正在尋找“包含”類型的搜尋,其中使用者輸入的值是文字片段(即他們輸入的內容需要按原樣匹配,但也可以是較大字元串的一部分,而不是必須是整場比賽),那麼也許做一個正常賽LIKE '%{user_input}%'是最好的。

引用自:https://dba.stackexchange.com/questions/122998