Solr 4.0 UUIDを使用してid値を自動的に生成する方法
最近Luceneを勉強して、勝手にSolrを勉強して、Solrは各レコードに1つのプライマリ・キー値が必要であることを規定して、1つのインデックスを一意に識別するレコードに用いて、デフォルトはidフィールドを使用してプライマリ・キーを作る(schema.xmlファイルの変更を通じて)ので、最も煩わしいのはこのプライマリ・キーが自動成長を設定できないので、1つのレコードを追加するたびに、手動でidフィールドに値を割り当てなければなりません.誤って繰り返すと、元のレコードを直接上書きする気持ちが悪くなるので、プログラミング時にこのid値をいくつかの方法で維持しなければなりません.googleはsolrにUUID値(Universal Unique Identifiers汎用一意識別子)を自動的に生成させる方法を発見しました.これにより、プログラミング時にこのid値を維持する必要はありません.この方法を使用する欠点は、id値が数値連続ではなく、5 bb 977 a 7-8 a 4 c-46 d 6-ae 49-b 4 eefade 080 cなどの文字列であることです.
具体的な構成は以下の通りです.(これはSolr 4.0の構成です)
一、schema.xmlファイルの構成
1、fieldTypeの追加
2、プライマリ・キーidフィールド構成を追加する(注釈または元のidフィールド構成を削除する、覚えておく)
二、solrconfig.xmlファイルの構成
1、以下の配置、原因及び産出可能な異常参考を注記する.https://issues.apache.org/jira/browse/SOLR-3398
注意:前のステップは追加して、ここは修正して、もし直接追加するならば、それでは缲り返して配置して、このように后の配置は前の配置をカバーして、本人はとても不幸にもデフォルトの配置に私の追加した配置をカバーされて、その时とても気がふさいでいます!
具体的な構成は以下の通りです.(これはSolr 4.0の構成です)
一、schema.xmlファイルの構成
1、fieldTypeの追加
<types>
<!-- other field types -->
<fieldType name="uuid" class="solr.UUIDField" indexed="true" />
</types>
2、プライマリ・キーidフィールド構成を追加する(注釈または元のidフィールド構成を削除する、覚えておく)
<field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" />
二、solrconfig.xmlファイルの構成
1、以下の配置、原因及び産出可能な異常参考を注記する.https://issues.apache.org/jira/browse/SOLR-3398
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>
、updateRequestProcessorChain構成を追加<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
、そのうちの1つのrequestHandler構成を修正し、注意:前のステップは追加して、ここは修正して、もし直接追加するならば、それでは缲り返して配置して、このように后の配置は前の配置をカバーして、本人はとても不幸にもデフォルトの配置に私の追加した配置をカバーされて、その时とても気がふさいでいます!
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<!-- See below for information on defining
updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
<lst name="defaults">
<str name="update.chain">dedupe</str>
</lst>
-->
<lst name="defaults">
<str name="update.chain">uuid</str>
</lst>
</requestHandler>