首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单个数据库列的搜索引擎

单个数据库列的搜索引擎
EN

Stack Overflow用户
提问于 2012-06-18 19:52:12
回答 3查看 144关注 0票数 3

我正在寻找一个搜索引擎,我可以指向我的数据库中的一列,支持高级功能,如拼写更正和“接近”结果。

现在我只是在用

SELECT <column> from <table> where <colname> LIKE %<searchterm>%

我错过了一些结果,特别是当用户拼写错误的项目时。

我已经写了一些代码来修复拼写错误,通过拼写检查器运行它,但我认为可能有一个更好的开箱即用选项。Google提供了很多索引和搜索整个网站的选项,我只需要索引和搜索这一列表项。

EN

回答 3

Stack Overflow用户

发布于 2012-06-19 01:38:38

Apache Solr是一个强大的搜索引擎,它提供(1) N-Gram索引(不仅搜索完整的字符串,还搜索部分子串,这对获得相似的结果有很大帮助) (2)提供基于距离度量/编辑距离的开箱即用的拼写校正器(这将帮助您在用户键入chicaog时获得“您的意思是芝加哥吗”) (3)它为您提供了一个开箱即用的模糊搜索选项(模糊搜索帮助您获得与您的查询接近的匹配,例如,如果用户输入GA-123,他将获得VMDEO-123 ) (4) Solr还为您提供了“更像这样”的组件,它将像上面的选项一样帮助您。

Solr (基于Lucene搜索库)是开源的,并且正在慢慢地成为搜索(垂直)行业中的事实,并且非常适合数据库搜索(正如您所说的为数据库列建立索引,这对Solr来说是小菜一碟)。许多财富500强公司以及互联网巨头都在使用Lucene和Solr。

Sphinx搜索引擎也很棒(我也很喜欢它,因为它占用的资源非常少&它是基于C++的),但简而言之,Solr更受欢迎。

现在,Python支持和API都可用于这两个平台。但是,Sphinx是一个exe,而Solr是一个HTTP。因此,对于Solr,您只需从python程序调用Solr URL,该URL将返回您可以发送到前端以进行呈现的结果,就这么简单)

到目前为止,运行得很好。来回答你的问题:

首先,你应该问问自己,你是否真的需要一个搜索引擎?搜索引擎对上面提到的所有用例都很好,但实际上是为了搜索大量的全文数据或数百万行的表格数据。算法,如你的意思,类似的记录,拼写校正器等可以写在顶部。在Solr上清零之前,请在谷歌上搜索(1) Peter Norvig拼写校正器和(2) N-Gram索引。可能的情况是,只需编写几行代码,您就可能真正得到您正在寻找的东西。

我让你来决定:)

票数 3
EN

Stack Overflow用户

发布于 2012-06-19 00:40:45

我建议研究一下像Sphynx搜索这样的开源技术。

票数 1
EN

Stack Overflow用户

发布于 2012-06-19 02:54:04

在使用Solr/Sphinx进行全文索引之前--这会增加复杂性和开销--如果您正在使用PostgreSQL数据库,您可以尝试使用该数据库中的内置全文引擎。它很容易设置,并且比LIKE查询执行得更好。

查看https://github.com/hcarvalhoalves/django-tsearch2

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

https://stackoverflow.com/questions/11082229

复制
相关文章

相似问题

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