我有一个搜索难题我需要解决,但我的技能很小,所以如果我没有解释得很好,我很抱歉。为了尝试和说明问题,这里有两个数据库列中的数据的一个例子: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)功能。 –