deltaQuery:的意思是,查询出所有经过修改的记录的 Id 可能是修改操作,添加操作,删除操作产生的(此查询只对增量导入起作用,而且只能返回 Id 值)
deletedPkQuery:此操作值查询那些数据库里伪删除的数据的 Id、solr 通过它来删除索引里面对应的数据(此查询只对增量导入起作用,而且只能返回 Id 值)。
deltaImportQuery:是获取以上两步的 Id,然后把其全部数据获取,根据获取的数据对索引库进行更新操作,可能是删除,添加,修改(此查询只对增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列)。
parentDeltaQuery:从本 entity 中的 deltaquery 中取得参数。
dataSource 中 batchSize 属性的作用是可以在批量导入的时候限制连接数量。
配置完成后重新加载一下 Core。
中文分词将 contrib\analysis-extras\lucene-libs 目录中的 lucene-analyzers-smartcn-7.7.2.jar 复制到 server\solr-webapp\webapp\WEB-INF\lib 目录下,否则会报错。
在 managed-shchema 中添加如下代码:
把需要使用中文分词的字段类型设置成 text_cn:
<field type="text_cn" indexed="true" stored="true" multiValued="false"/> 主从部署Solr 复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于 rsync 的 SOLR 不同方式部署成本过高,被 Solr 1.4 版本所替换,取而代之的就是基于 HTTP 协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可。Solr 索引同步的是 Core 对 Core,以 Core 为基本同步单元。
主服务器 solrconfig.xml 配置:
<requestHandler> <lst> <!-- 执行 commit 操作后进行 replicate 操作同样的设置'startup', 'commit', 'optimize'--> <str>commit</str> <!-- 执行 startup 操作后进行 replicate 操作 --> <str>startup</str> <!-- 复制索引时也同步以下配置文件 --> <str>schema.xml,stopwords.txt</str> <!-- 每次 commit 之后,保留增量索引的周期时间,这里设置为 5 分钟。 --> <str name="commitReserveDuration">00:05:00</str> <!-- 验证信息,由用户自定义用户名--> <!-- <str>root</str> --> <!-- 验证信息,由用户自定义密码 --> <!-- <str>password</str> --> </lst> <!-- <lst> <str>:8983/solr</str> <str>00:00:60</str> </lst> --> </requestHandler>从服务器 solrconfig.xml 配置:
<requestHandler> <lst> <!-- 主服务器的同步地址 --> <str></str> <!-- 从服务器同步间隔,即每隔多长时间同步一次主服务器 --> <str>00:00:60</str> <!-- 压缩机制,来传输索引,可选 internal|external,internal:内网,external:外网 --> <str>internal</str> <!-- 设置连接超时(单位:毫秒) --> <str>50000</str> <!-- 如果设置同步索引文件过大,则应适当提高此值。(单位:毫秒) --> <str>500000</str> <!-- 验证用户名,需要和 master 服务器一致 --> <!-- <str>root</str> --> <!-- 验证密码,需要和 master 服务器一致 --> <!-- <str>password</str> --> </lst> </requestHandler>Solr 主从同步是通过 Slave 周期性轮询来检查 Master 的版本,如果 Master 有新版本的索引文件,Slave 就开始同步复制。
1、Slave 发出一个 filelist 命令来收集文件列表。这个命令将返回一系列元数据(size、lastmodified、alias 等信息)。