SolrEntityProcessor

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>

不当之处,敬请指正.谢谢!

原文地址:https://www.cnblogs.com/a198720/p/4266824.html