我正在尝试制作一个智能的多语言PHP搜索引擎。例如,我想在samsung smarthphone
中搜索smasung smortphone
和用户类型。哪个是从1 000 000行DB中提取的最佳方法。
我的想法是选择此REGEXP(对于此示例)匹配的行
'[a-zA-z]*[smasung]{4,}[a-zA-Z]*' AND '[a-zA-Z]*[smortphone]{5,}[a-zA-Z]*'
这是选择包含至少包含4或5个用户输入字母的单词的所有行。但这意味着在每个选定的行上运行此正则表达式,然后通过用户输入来匹配匹配并保存最佳匹配。对于1 000 000而言,它非常缓慢。你有更好的主意吗?
答案 0 :(得分:0)
我知道这个问题,所以我已将所有重要记录导出到elasticsearch(NoSql并且非常容易安装)。接下来实现模糊搜索。 (集结中)
{
"multi_match" : {
"fields" : ["product"],
"query" : "smasung smortphone",
"fuzziness" : "AUTO"
}
}