我有一個搜索難題我需要解決,但我的技能很小,所以如果我沒有解釋得很好,我很抱歉。爲了嘗試和說明問題,這裏有兩個數據庫列中的數據的一個例子:PHP模糊搜索2列並返回最佳匹配
| Start address | End address |
-----------------------------------------------
1 | Essex | Moortown, Leeds |
2 | Place A, London | Place B, Manchester |
3 | Townsville, Essex | Leeds Town Hall |
4 | Essex Trading Estate | Another Leeds Estate |
5 | Somewhere, Devon | Yeoville |
6 | ... | ... |
如果,例如,用戶在相應提出「21有些街,埃塞克斯」和「利茲一些地方」表單字段,我需要搜索MySQL數據庫並且回退最前面的X個最佳匹配,在這個例子中它將是第1,3和4行,因爲它們都包含第一列的Essex和第二列的Leeds。
我可以看到PHP有兩個函數similar_text()和levenshtein(),這可能對此有所幫助,但我不確定哪種方法更適合這種零件匹配以及如何獲得最準確搜索結果。我在MySQL中沒有發現任何類似的東西。
有沒有經驗的人能夠給我任何指針?
乾杯
安迪
您可以嘗試在兩個字段之間放置'FULLTEXT'複合索引並使用MySQL的自然語言搜索:https://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html – CD001
您可以考慮使用MySQL的[全文搜索](https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html)功能。 –