[英]Relation of SOLR to DB to App in a Text Search Engine
我最近听到一些同事谈论的一篇文章,其中有一篇曾读过,涉及将SOLR与数据库和应用程序结合使用,为应用程序本身提供“超收费”文本搜索引擎。 据我所知,SOLR是一项Web服务,它将Lucene的文本搜索功能公开给支持Web的应用程序。
我找不到他们在谈论的文章,但是通过Google进行一些相关的搜索,使使用SOLR的文本搜索引擎上的几篇超抽象的文章陷入了困境。
我想知道的是:这里所有三个组件之间的关系是什么?
谁叫谁? Lucene是否会以某种方式定期从数据库中提取和缓存文本数据,然后该应用向SOLR查询Lucene的文本内容? 基于Java的SOLR驱动的文本搜索引擎的典型软件堆栈/设置是什么? 提前致谢!
您在这里的基本概述中是正确的:SOLR是位于Lucene之上的Web服务和语法帮助器。
本质上,将SOLR配置为基于许多配置选项(包括加权,字符串操作等)为特定数据建立索引。SOLR可以指向DB作为其要索引的数据源,也可以指向单个文档(例如XML)文件)可以通过网络API提交以进行索引。
Web应用程序通常会向SOLR API发出HTTP请求,而SOLR将返回与查询匹配的索引数据。 出于所有目的和目的,Web应用程序将SOLR视为HTTP API。 它不需要以任何方式了解Lucene。 因此,从本质上讲,数据流如下所示:
Website --> SOLR API --> indexed datasource (DB or document collection)
就“何时” SOLR看着数据库为新数据或更新数据建立索引而言,可以通过多种方式进行配置,但是最常见的是通过调用导致重新索引的SOLR API的特定功能来触发。 这可以通过计划的作业手动进行,也可以通过网络应用程序等方式进行。
这是我开始为我的项目实施时所了解的-
SOLR可以称为应用程序服务器和数据库之间的中间人 。 SOLR由自己的服务器(码头)组成,该服务器将启动并侦听来自您的应用服务器的任何请求。
您的应用程序服务器调用SOLR,为其提供模块名称和搜索模式
SOLR将被提供一些xml配置文件,这些文件将告诉SOLR,对于给定的模块名称,必须对架构的哪个表进行缓存(或建立索引)
SOLR可能正在使用Lucene的文本搜索功能来理解“搜索模式”并从已缓存/索引的数据中获得所需的结果
可以手动(通过GET URL执行命令)完成SOLR 索引 (全部或部分),也可以使用SOLR配置文件定期进行索引
您可以参考Apache SOLR网站以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.