0

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

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

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

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

4

2 回答 2

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 的特定函数来触发。这可以手动、通过计划的作业、以编程方式从 Web 应用程序等发生。

于 2013-04-26T17:12:44.473 回答
0

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

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

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

  • SOLR 将收到一些xml 配置文件,这些文件会告诉它, 对于给定的模块名称,您的架构的哪个必须被缓存(或索引)

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

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

您可以参考Apache SOLR站点以获取更多信息

于 2013-04-26T17:15:23.863 回答