我正在尝试为e-shop创建一个搜索引擎,我想做这个:
如果客户在搜索栏中输入e.x银河白,我想执行一个sql查询,将该字符串与产品进行匹配,不仅是标题类似银河白s3的产品,还包括标题为银河s3白16 gb的产品。
这有可能吗?
发布于 2013-05-05 03:42:54
您可以通过查看搜索到的关键字与数据库中的标题之间的距离来轻松实现搜索。Levenshtein distance算法是一种很好的距离算法。
更新:用于子字串搜索的
Levenshtein适用于拼写错误。除此之外,您还可以将字符串拆分为单词,然后对您的单词进行简单的字符串搜索。然后,您可以将结果与Levenshtein结果合并。
例如,如果用户搜索"galaxy白色s4";
您可以将此字符串拆分为三个单词:
galaxy
white
s4然后,对于每个单词,您可以在标题中进行朴素的字符串搜索,例如:
SELECT * FROM Titles
WHERE
Titles LIKE '%galaxy%' OR
Titles LIKE '%white%' OR
Titles LIKE '%s4%'到目前为止,这应该解决了您的问题。但我有几个建议!
Michal Borek关于同义词的建议是一个很好的想法。这会提高你的成绩。此外,我建议使用标签,例如,如果用户搜索某个属性,例如蓝牙,您可能希望返回支持蓝牙的设备。
发布于 2013-05-05 03:47:06
更准确地说,可能需要提供“相似短语”(同义词)。因为例如你在Windows phone8上搜索手机,你可能只需要输入"WP8",所以Levenshtein距离并不能解决这个问题。
https://stackoverflow.com/questions/16378208
复制相似问题