0

我想为我的网站建立一个搜索引擎,以便我可以快速找到相关内容。我做了很多谷歌搜索,发现了 ElasticSearch 和 Solr(它们都位于 Lucene 之上)和 whoosh(基于 python)。

但是所有这些搜索引擎都只是在数据之上构建一个“倒排索引”吗?获得更高质量搜索的其他算法方法是什么?

我对这篇在 Solr 之上使用协同过滤的博客文章很感兴趣,它会返回相关的搜索查询:

http://www.opensourceconnections.com/2013/08/25/semantic-search-with-solr-and-python-numpy/

还有其他我应该注意的常用技术吗?是否有其他库位于 ElasticSearch/Solr 之上,我可以插入并使用“开箱即用”?

任何链接或提示将不胜感激!

4

5 回答 5

3

你还没有提到你正在研究什么技术栈。

如果你使用 Ruby on Rails,我会推荐Tire,它是一个 gem,它在 ElasticSearch 上提供了一个 DSL 包装器。本质上,它允许您在 Elasticsearch 中索引您的数据。

对于 Rails,Sunspot是人们用来与 Solr 交互的非常流行的 gem。

对于 .NET - SolrNET是一个很棒的 Solr 客户端。

您问题的其他部分(围绕实现一个好的搜索引擎)太宽泛了 - 我建议阅读一本好书,例如Lucene in Action,以了解 Solr/Elasticsearch 可以做什么。

我确实有一些我不久前写的笔记,你可以在这里阅读我的一些搜索经验。

编辑:

由于您使用 python,我会推荐Haystack,尽管它是特定于 Django 的。它非常适合我们的需求。但是,如果您不使用 django,我可以将solrpy视为 Solr 客户端。Haystack 可与 Solr 和 Elasticsearch 一起使用。

于 2013-09-02T10:06:18.527 回答
0

我建议你学习 Solr API,因为它是从 4 5 年开始开发的,所以你可以在 Solr 中找到很多插件,比如相关的搜索 API,但是在弹性搜索中它很容易配置,但是它是非常年轻的引擎,所以需要有待进一步发展。

于 2013-09-09T10:57:46.520 回答
0

我建议您使用 Google 自定义搜索引擎。这里看看。 https://www.google.com/cse/all

于 2013-09-10T09:46:19.750 回答
0

我们在 Solr 和 Elastic 上开发了多个搜索引擎。Solr 曾经是最好的,因为它提供了管理和调试索引所需的大部分工具。现在,Elastic 提供与 Solr 相同的功能,无论是原生还是通过插件。此外,在高性能/高可用性场景中更容易配置(易于分片或集群)。

您的技术堆栈无关紧要。Solr 和 Elastic 都有几乎所有语言的客户端,而且您可以通过纯 HTTP 访问它们:

也就是说,每个搜索引擎都适用于一个问题域。调整 Elastic 或 Solr 以检索相关结果是一种需要反复试验的艺术。您必须为要搜索的每个字段定义分析器,并根据您的搜索模式和您期望的结果类型。

最终,要创建具有单个输入来搜索文档类型的不同属性的搜索引擎,可能需要使用 DisMax 查询,您可以在其中根据搜索词与特定文档字段的匹配来提升结果。

总结一下:选择 Elastic,并获得一些插件或前端。两个建议:

  • Inquisitor:用于测试您的分析仪
  • 弹性头:用于管理目的
于 2013-09-10T15:05:59.787 回答
0

Pyes是用于 Elasticsearch 的文档齐全的 Python 客户端。

此外,这个Youtube 视频很好地概述了将 Elasticsearch 与 Python 结合使用。

于 2013-09-10T04:03:47.270 回答