【问题标题】:Recommended Approaches for building/designing a search engine for my website为我的网站构建/设计搜索引擎的推荐方法
【发布时间】:2013-09-04 18:20:37
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您能详细介绍一下您的网站吗?

标签: search solr lucene full-text-search elasticsearch


【解决方案1】:

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

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

对于 Rails,Sunspot 是一个非常受欢迎的宝石,人们用来与 Solr 交互。

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

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

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

编辑:

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

【讨论】:

  • 感谢您的回复和建议!我更喜欢在 python 中工作......我将看看“Lucene in Action”。您的笔记链接已损坏...
  • 编辑了一些 python 客户端细节。笔记链接对我有用,无论如何试试这个 - www.hacknlearn.in/tag/search
  • 注意:由于 elasticsearch-ruby gem github.com/elasticsearch/elasticsearch-ruby,轮胎开发已经停止
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    此外,Youtube video 提供了一个很好的概述,介绍了将 Elasticsearch 与 Python 结合使用。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

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

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

        • Inquisitor:用于测试您的分析仪
        • 弹性头:用于管理目的

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多