使用部分精确数学进行 MySQL 数据库搜索

标签 mysql search fuzzy-search

我有个人参数的MySQL数据表(每人大约100个):

{"id":"1", "height":"182", "hair_color":"red", "eyes_color":"haze", "day_of_birth":"25"}

(JSON格式只是为了简单起见)

我必须能够实现部分搜索,以便能够通过 5-1 个参数来获取结果。

查询:[“height”:182,“hair_color”:“red”,“day_of_birth”:“25”,“skin_color”:“black”]

最后我需要包含 NUMBER 个匹配参数的匹配行列表

喜欢:["id":"1","matched":"2"]

并获得,说“前 100 个”匹配数量最多的(当然,尽快:))

最佳答案

如果您必须坚持使用 SQL 数据库,请尝试以下操作:

select id, if (height=182,1,0)  
         + if(hair_color='red',1,0)
         +  if(day_of_birth=25,1,0)
         + if(skin_color='black',1,0) as matched
from person
order by matched desc
limit 100

但是,为了将大量条目与大量参数相匹配,可能有更好的选择,例如使用全文索引,例如 Apache Lucene/SOLR。

关于使用部分精确数学进行 MySQL 数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41433315/

相关文章:

mySQL 右外连接

algorithm - 聚光灯顶命中算法

xcode - 是否有快捷方式在 Xcode 中搜索光标下的单词?

Oracle 模糊搜索(带空格)

php - Laravel Eloquent 多表

Python MySQL 连接参数错误

php - 过滤搜索查询的最佳方法是什么 - PHP MySQL

linux - 在 vi 编辑器中找到匹配模式后显示前 5 行

r - 使用 R 中的模糊/近似字符串匹配合并两个数据框

python - 何时需要Elasticsearch进行数据分析和客户服务