我正在寻找一种搜索引擎,可以指向我的数据库中支持拼写校正和“接近”结果等高级功能的列。单个数据库列的搜索引擎
现在我只是用
SELECT <column> from <table> where <colname> LIKE %<searchterm>%
,我特别缺少了一定的效果,当用户拼错项目。
我已经写了一些代码,通过运行拼写检查程序来修复拼写错误,但认为可能有更好的开箱即用选项。谷歌提出了很多索引和搜索整个网站的选项,我真的只需要索引和搜索这一个表格列。
我正在寻找一种搜索引擎,可以指向我的数据库中支持拼写校正和“接近”结果等高级功能的列。单个数据库列的搜索引擎
现在我只是用
SELECT <column> from <table> where <colname> LIKE %<searchterm>%
,我特别缺少了一定的效果,当用户拼错项目。
我已经写了一些代码,通过运行拼写检查程序来修复拼写错误,但认为可能有更好的开箱即用选项。谷歌提出了很多索引和搜索整个网站的选项,我真的只需要索引和搜索这一个表格列。
我会建议寻找像斯芬克斯搜索这样的开源技术。
Apache Solr是一个很棒的搜索引擎,它提供了(1)N-Gram索引(不仅可以搜索完整的字符串,还可以搜索部分子字符串,这对获得类似结果非常有帮助)(2)提供开箱即用的拼写基于距离度量/编辑距离的校正器(当用户键入chicaog时,它将帮助您获得“您是否意味着芝加哥”)(3)它提供了一个开箱即用的模糊搜索选项(Fuzzy Searches可以帮助您获取(例如,如果用户键入GA-123,他将获得VMDEO-123作为结果)(4)Solr还向您提供“More Like This”组件,它可以帮助您解决上述问题。
Solr(基于Lucene Search Library)是开源的,它正在慢慢兴起,成为Search(垂直)行业的事实上的产物,非常适合数据库搜索(正如您谈到索引数据库列时那样Solr的Cakewalk)。许多财富500强公司和互联网巨头都使用Lucene和Solr。
狮身人面像搜索引擎也很棒(我也喜欢它,因为它对所有东西都有很低的尺寸&是基于C++的),但简单地说,Solr更受欢迎。
现在Python支持和API都可用于两者。然而,Sphinx是一个exe文件,Solr是一个HTTP文件。所以对于Solr,你只需要调用你的python程序中的Solr URL,它会返回结果,你可以发送到你的前端进行渲染,就这么简单)
到目前为止好。回到你的问题:
首先,你应该问自己,你是否真的需要一个搜索引擎?搜索引擎对于上面提到的所有用例都很有用,但它的确适用于搜索大量全文数据或数百万行表格数据。算法像你的意思,相似的记录,拼写校正等可以写在最上面。在将Solr归零之前,请同时在Google搜索(1)Peter Norvig拼写纠正器&(2)N-Gram索引。可能性是,只需编写几行代码,就可以真正获得您正在寻找的东西。
我把它留给你来决定:)
去之前下来全文索引Solr的/狮身人面像的路线 - 这增加了复杂性和自己的开销 - 你可以尝试内置的全文引擎PostgreSQL如果你正在使用该数据库。与LIKE
查询相比,易于设置和执行。
你alredy知道[嗖(http://pypi.python.org/pypi/Whoosh/)? 我刚刚通过搜索[Lucene](http://en.wikipedia.org/wiki/Lucene)找到python – DonCallisto