2012-03-09 14 views
0

完全インポート中にSolrがインデックスをクリアしない問題があります。Solr完全リフレッシュでインデックスが消去されない

すべてのサーバーでSolr 3.4が実行されますが、構成は可能な限りバニラとして実行されます。

私は開発環境と自分のコンピュータ上のインスタンスでこれを試してみましたが、同様の結果が得られました。

スキーマはかなり簡単であり、これらは顕著な点である。注目すべき

<schema name="System" version="1.4"> 
... 
    </types> 
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" /> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0" /> 
    <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0" /> 
    <fieldType name="documentKey" class="solr.TextField"> 
     <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     </analyzer> 
    </fieldType> 
    </types> 
    <fields> 
    <field name="document_id" type="documentKey" indexed="true" stored="true" required="true" /> 
    <field name="entity_id" type="long" indexed="true" stored="true" required="true" /> 
    <field name="name" type="string" indexed="true" stored="true" required="true" /> 
    <field name="entity_type" type="string" indexed="true" stored="true" required="false" /> 
    <field name="Timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/> 
    </fields> 
</schema> 

: - DOCUMENT_IDフィールドは、索引を移入するために使用されるマテリアライズド・ビューで計算され、の組み合わせでありますこのインデックスにない他のフィールドはentity_idには属していません。ユニークです。 - entity_idフィールドは、いくつかのテーブルのキーです。同じdocument_idの場合、リフレッシュと別のdocument_idの間では大きく変化します。私のようなインデックス問い合わせる場合

フル・リフレッシュする前に、:

http://localhost:8080/qq-solr/system/select/?rows=10&q=document_id:%22French_Polynesia/Huahine~4034376%22 

を私が取得:

<?xml version="1.0" encoding="UTF-8"?> 
    <response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">5</int> 
     <lst name="params"> 
     <str name="indent">true</str> 
     <str name="q">document_id:"French_Polynesia/Huahine~4034376"</str> 
     <str name="rows">10</str> 
     </lst> 
    </lst> 
    <result name="response" numFound="1" start="0"> 
    <doc> 
     <date name="Timestamp">2012-03-08T09:47:26.335Z</date> 
     <str name="document_id">French_Polynesia/Huahine~4034376</str> 
     <long name="entity_id">22902728</long> 
     <str name="name">Huahine</str> 
     <str name="type">LOCATION</str> 
    </doc> 
    </result> 
</response> 

は、それから私はリフレッシュ:

http://localhost:8080/qq-solr/system/dataimport?command=full-import&clean=true&commit=true&optimize=true 

(私はクリーンを知っています、コミット、最適化は冗長ですが、私はそれらを使って確実に確認しました)、しばらくしてから、すべてが正常であるというメッセージが表示されます。

http://localhost:8080/qq-solr/system/select/?rows=10&q=document_id:%22French_Polynesia/Huahine~4034376%22 

そして私が手::

その後、私は再びインデックスを照会

<?xml version="1.0" encoding="UTF-8"?> 
    <response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">5</int> 
     <lst name="params"> 
     <str name="indent">true</str> 
     <str name="q">document_id:"French_Polynesia/Huahine~4034376"</str> 
     <str name="rows">10</str> 
     </lst> 
    </lst> 
    <result name="response" numFound="1" start="0"> 
    <doc> 
     <date name="Timestamp">2012-03-09T08:31:07.317Z</date> 
     <str name="document_id">French_Polynesia/Huahine~4034376</str> 
     <long name="entity_id">22902728</long> 
     <str name="name">Huahine</str> 
     <str name="type">LOCATION</str> 
    </doc> 
    </result> 
</response> 

しかし、データベースにENTITY_IDが違います!

私はタイムスタンプが更新されているので、レコードには触れていますが、なぜ古い値が保持されているのでしょうか?

+0

あなたの質問には答えませんが、なぜSolr 3.xで最適化を使用していますか?見て[ここ](http://www.searchworkings.org/blog/-/blogs/simon-says%3A-optimize-is-bad-for-you)、あなたはほとんどそれを必要としない可能性がありますそれは悪いです!そのデフォルトの動作が悪いことを避けるために、dihとoptimize = falseを使用します。 – javanna

答えて

0

Interactive Development ModeからDataImportHandler(DIH)プロセスを実行して、データベースクエリが期待しているentity_idを取得していることを確認できます。 solrエントリのタイムスタンプが更新されているため、DIHプロセスが実行されていますが、この原因はデータの取得方法にあると推測しています。

+0

あなたが言ったように、データは正常に見えましたが、その後はコアが正常に動作するようになりました。奇妙なのは、この動作がいくつかのリフレッシュとTomcatの再起動によって持続し、同じSolrインスタンス内の別のコアが同じ動作を示さないことです。私はあなたの答えを受け入れるでしょう。 – GVdP

関連する問題