4

我正在尝试将 Solr 4 配置为使用 UUID,但到目前为止我没有成功

通过阅读文档,我看到了两种不同的方式来配置 schema.xml 以使用 UUID(两者都不起作用)

对于两个我都需要写

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />

选项 1:添加:

<field name="id" type="uuid" indexed="true" stored="true" default="NEW" multiValued="false"/>

并确保删除该行

<uniqueKey>id</uniqueKey>

选项2添加:

<field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" /> 

两个选项都不能正常工作并返回 org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error initializing QueryElevationComponent。

我还尝试使用配置向 colrconfig.xml 文件添加一行:

<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory"> 
    <str name="fieldName">uniqueKey</str> 
</processor>    
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

谢谢,

西蒙

4

2 回答 2

8

经过这里的一些工作是解决方案:

在 schema.xml 中,添加(或编辑)字段字段

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />   

在 solr 配置中,更新链并将链添加到处理程序(例如:for /update/extract):

<updateRequestProcessorChain name="uuid">
  <processor class="solr.UUIDUpdateProcessorFactory">
    <str name="fieldName">id</str>
  </processor>
  <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>`         

<requestHandler name="/update/extract" 
                startup="lazy"
                class="solr.extraction.ExtractingRequestHandler" >
  <lst name="defaults">
    <str name="lowernames">true</str>
    <str name="uprefix">ignored_</str>
    <str name="captureAttr">true</str>
    <str name="fmap.a">links</str>
    <str name="fmap.div">ignored_</str>
    <str name="update.chain">uuid</str>
  </lst>
</requestHandler>
于 2013-09-12T10:27:44.990 回答
-1

如果不使用 Query Elevation 组件,您可能需要删除它。

QueryElevationComponent 需要定义唯一键,它应该是带有JIRA的字符串唯一键。

但是,它已通过 Solr 4.0 alpha 修复,因此取决于您使用的 Solr 版本。

Solr wiki中记录了此限制。

于 2013-09-10T04:00:36.007 回答