我想为我的网站构建搜索引擎,以便快速找到相关内容。我做了很多谷歌搜索,发现了ElasticSearch和Solr(它们都位于Lucene之上)和whoosh(基于python)。
但是所有这些搜索引擎都只是在数据之上构建“倒排索引”吗?有哪些其他算法可以获得更高质量的搜索?
我对此博客文章很感兴趣,在Solr上使用协同过滤,它返回相关的搜索查询:
http://www.opensourceconnections.com/2013/08/25/semantic-search-with-solr-and-python-numpy/
我应该注意其他常见技巧吗?是否有其他库可以插在ElasticSearch / Solr之上,我可以插入,并使用“开箱即用”?
非常感谢任何链接或提示!
答案 0 :(得分:3)
您还没有提到您正在处理的技术堆栈。
如果你使用Ruby on Rails,我会推荐Tire,这是一个通过ElasticSearch提供DSL包装的gem。从本质上讲,它允许您在Elasticsearch中索引数据。
对于Rails,Sunspot是人们用来与Solr交互的非常受欢迎的宝石。
对于.NET - SolrNET是一个很棒的Solr客户端。
你问题的其他部分(围绕实现一个好的搜索引擎)太宽泛了 - 我建议你阅读一本好书,例如Lucene in Action,以了解Solr / Elasticsearch可以做些什么。
我有一些笔记,我写了一段时间,你可以阅读我在搜索here的一些经验。
编辑:
由于您使用的是python,我建议使用Haystack,尽管它是特定于Django的。它非常适合我们的需求。但是,如果您不使用django,我可以将solrpy视为Solr客户端。 Haystack与Solr和Elasticsearch合作。
答案 1 :(得分:0)
我建议您学习Solr API,因为它是在4年后开发的,因此您可以在Solr中找到许多插件,如相关搜索API,但在弹性搜索中,它很容易配置,但它很年轻因此需要开发更多的发动机。
答案 2 :(得分:0)
Pyes是Elasticsearch的一个文档齐全的Python客户端。
此外,这个Youtube video提供了使用Elasticsearch和Python的一个很好的概述。
答案 3 :(得分:0)
我建议您使用Google自定义搜索引擎。 在这里看看。 https://www.google.com/cse/all
答案 4 :(得分:0)
我们在Solr和Elastic上开发了几个搜索引擎。 Solr曾经是最好的,因为它提供了管理和调试索引所需的大多数工具。现在,Elastic提供与Solr相同的功能,无论是本机还是通过插件。此外,在高性能/高可用性方案(易于分片或群集)中配置更容易。
您的技术堆栈无关紧要。 Solr和Elastic都有几乎所有语言的客户端,而且你可以通过普通的HTTP访问它们:
也就是说,每个搜索引擎都适用于问题域。调整Elastic或Solr以检索相关结果是一种艺术,有一些试验和错误。 您必须根据搜索模式和您期望的结果类型为您要搜索的每个字段定义分析器。
最后,要创建搜索引擎,使用单个输入搜索文档类型的不同属性,可能需要使用DisMax查询,您可以根据搜索项与特定文档字段的匹配来提高结果。
总结一下:选择Elastic,获取一些插件或前端。两个建议: