【问题标题】:Relation of SOLR to DB to App in a Text Search Engine文本搜索引擎中 SOLR 与 DB 到 App 的关系
【发布时间】:2013-04-20 22:26:37
【问题描述】:

我最近无意中听到几位同事谈论他们中的一个人读过的一篇文章,该文章涉及将 SOLR 与数据库和应用程序结合使用,从而为应用程序本身提供“超强”文本搜索引擎。据我所知,SOLR 是一种 Web 服务,它向支持 Web 的应用程序提供 Lucene's 文本搜索功能。

我无法找到他们正在谈论的文章,​​但通过一些相关的 Google 搜索,可以找到几篇关于使用 SOLR 的文本搜索引擎的超级抽象文章。

我想知道的是:这里所有 3 个组件之间的关系是什么?

谁打电话给谁? Lucene 是否以某种方式定期从数据库中提取和缓存文本数据,然后应用程序向 SOLR 查询 Lucene 的文本内容?基于 Java、SOLR 驱动的文本搜索引擎的典型软件堆栈/设置是什么?提前致谢!

【问题讨论】:

    标签: java solr lucene full-text-search cassandra


    【解决方案1】:

    您的基本大纲是正确的:SOLR 是位于 Lucene 之上的 Web 服务和语法助手。

    从本质上讲,SOLR 被配置为根据许多配置选项(包括加权、字符串操作等)对特定数据进行索引。SOLR 可以指向数据库作为其要索引的数据源,也可以指向单个文档(例如,XML 文件)可以通过 Web API 提交以进行索引。

    Web 应用程序通常会向 SOLR API 发出 HTTP(s) 请求,SOLR 会返回与查询匹配的索引数据。出于所有意图和目的,Web 应用程序将 SOLR 视为 HTTP API;它不需要以任何方式了解 Lucene。所以本质上,数据流看起来像:

    Website --> SOLR API --> indexed datasource (DB or document collection)
    

    就“何时”SOLR 查看数据库以索引新的或更新的数据而言,这可以通过多种方式进行配置,但最常见的是通过调用导致重新索引的 SOLR API 的特定函数来触发。这可以手动、通过计划的作业、通过网络应用程序以编程方式等方式发生。

    【讨论】:

      【解决方案2】:

      这是我开始为我的项目实施它时所理解的 -

      • SOLR 可以被称为应用服务器和应用程序服务器之间的中间人 数据库。 SOLR 由它自己的服务器(码头)组成,该服务器将启动并且 监听来自您的应用服务器的任何请求。

      • 您的应用程序服务器调用 SOLR,并为其指定 模块 名称和 搜索模式

      • SOLR 将收到一些 xml 配置 文件,这些文件会告诉它, 您的 schematable 必须为给定的 模块名称

      • SOLR 可能正在使用 Lucene 的文本搜索功能来理解 “搜索模式” 并从已经 缓存/索引数据

      • SOLR 索引(全部或部分)可以手动完成(通过执行 命令通过 GET URL)或使用 SOLR 定期 配置文件

      您可以参考Apache SOLR网站了解更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-09
        • 2010-11-26
        • 2011-04-23
        • 2015-06-21
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        相关资源
        最近更新 更多