PHP模糊搜索2列并返回最佳匹配

时间:2017-04-11 10:07:22

标签: php mysql search

我有一个我需要解决的搜索难题,但我的技能很小,所以如果我不能解释这个问题,请道歉。为了尝试演示该问题,以下是两个数据库列中的数据示例:

  | 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 Some Street,Essex"和#34;利兹某地方"在相应的表单字段中,我需要搜索MySQL数据库并拉回最佳匹配的前X位数,在这个例子中将是第1,3和4行,因为它们都包含第一列中的Essex和Leeds中的第二

我可以看到PHP有两个函数similar_text()和levenshtein(),这可能对此有所帮助,但是我不确定哪种更适合这种部件匹配以及如何获得最多准确的搜索结果。我在MySQL中找不到类似的内容。

有没有经验的人能给我任何指示,拜托?

干杯

安迪

1 个答案:

答案 0 :(得分:0)

您可以使用简单的like函数来获取所需的搜索输出。为克服区分大小写使用较低或较高。

select start_address,end_address from table where lower(start_address) like '%urfirststring%'
and lower(end_address) like '%ursecondstring%'

将搜索字符串也传递到较低的位置。