Configuring Solr to use UUID as a key

2019-01-28 21:43发布

I am trying to configure Solr 4 to work with UUID and so far I am unsuccessful

From reading the documentation I have seen two different ways to configure schema.xml to work with UUID (both do not work)

for both I need to write

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

option 1: add:

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

and make sure to remove the line

<uniqueKey>id</uniqueKey>

option 2 add:

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

Both options are not working correctly and returning org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error initializing QueryElevationComponent.

I also tried adding a row to the colrconfig.xml file with the configuration:

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

Thanks,

Shimon

标签: solr solrj solr4
2条回答
SAY GOODBYE
2楼-- · 2019-01-28 22:01

After some work here is the solution:

In schema.xml, add (or edit) the field field

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

In solr config, update the chain and add the chain to the handlers (Example: 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>
查看更多
姐就是有狂的资本
3楼-- · 2019-01-28 22:02

You may want to remove the Query Elevation component if not using it.

QueryElevationComponent requires unique key to be defined and it should be a string unique key with JIRA.

However, it was fixed with the Solr 4.0 alpha so it would depend what Solr version you are using.

This limitation is documented in the Solr wiki.

查看更多
登录 后发表回答