SolrEntityProcessor从不同的solr实例和内核中引入数据,这个数据是基于指定的或者是过滤的查询来获取到的.如果你需要复制索引,并且小幅度的修改目标索引文件中的数据,那么可以使用SolrEntityProcessor.在某些情况下,solr可能是唯一一个所有数据都可用的地方,SolrEntityProcessor可以复制源索引文件中存储的字段,SolrEntityProcessor支持以下属性:
- url:(必填) 源Solr的实例/内核的URL.
- query:(必填) 执行在源索引文件上的主查询.
- fq:执行在源索引文件上的任何过滤查询(逗号分割).
- rows:每次迭代返回的行数(默认50).
- fl:从源索引文件中抓取的字段(逗号分割).
- qt:应给使用什么样的搜索句柄处理.
- wt:响应格式(javabin,xml),如果solr版本不匹配的话使用xml.
- timeout:查询超时时间,以秒为单位,这可以被用来作为故障安全,以防止索引会话从凝固起来。默认情况下,超时时间为5分钟。
例子1:
<dataConfig> <document> <entity name="sep" processor="SolrEntityProcessor" url="http://localhost:8983/solr/db" query="*:*"/> </document> </dataConfig>
例子2:
从源索文件中读取标题和内容.
<dataConfig> <script><![CDATA[ id = 1; function GenerateId(row) { row.put('id', (id ++).toFixed()); return row; } ]]></script> <document> <entity name="test" processor="SolrEntityProcessor" url="http://118.85.207.11:11000/solr/province" query="*:*" fq="kng_id:87533" fl="title,content" transformer="script:GenerateId"> <field column="id" name="id" /> <field column="title" name="title"/> <field column="content" name="content" /> </entity> </document> </dataConfig>
不当之处,敬请指正.谢谢!