首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql高级搜索

Sql高级搜索
EN

Stack Overflow用户
提问于 2013-05-05 03:39:25
回答 2查看 2.5K关注 0票数 0

我正在尝试为e-shop创建一个搜索引擎,我想做这个:

如果客户在搜索栏中输入e.x银河白,我想执行一个sql查询,将该字符串与产品进行匹配,不仅是标题类似银河白s3的产品,还包括标题为银河s3白16 gb的产品。

这有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2013-05-05 03:42:54

您可以通过查看搜索到的关键字与数据库中的标题之间的距离来轻松实现搜索。Levenshtein distance算法是一种很好的距离算法。

更新:用于子字串搜索的

Levenshtein适用于拼写错误。除此之外,您还可以将字符串拆分为单词,然后对您的单词进行简单的字符串搜索。然后,您可以将结果与Levenshtein结果合并。

例如,如果用户搜索"galaxy白色s4";

您可以将此字符串拆分为三个单词:

代码语言:javascript
复制
galaxy
white
s4

然后,对于每个单词,您可以在标题中进行朴素的字符串搜索,例如:

代码语言:javascript
复制
SELECT * FROM Titles 
WHERE 
Titles LIKE '%galaxy%' OR 
Titles LIKE '%white%' OR
Titles LIKE '%s4%'

到目前为止,这应该解决了您的问题。但我有几个建议!

Michal Borek关于同义词的建议是一个很好的想法。这会提高你的成绩。此外,我建议使用标签,例如,如果用户搜索某个属性,例如蓝牙,您可能希望返回支持蓝牙的设备。

票数 1
EN

Stack Overflow用户

发布于 2013-05-05 03:47:06

更准确地说,可能需要提供“相似短语”(同义词)。因为例如你在Windows phone8上搜索手机,你可能只需要输入"WP8",所以Levenshtein距离并不能解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16378208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档