質問

完全なインポート中に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フィールドは2つのテーブルの鍵であり、同じ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
.

(私はきれいな、コミット、そして最適化は冗長ですが、私は彼らを確かめるだけで使っていましたが、私はすべてがA-OKのメッセージを受け取りました。

その後、インデックスをもう一度照会します。

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が異なります。

タイムスタンプが更新されたことがわかりますので、レコードが触れられていますが、古い値が保持されているのはなぜですか?

役に立ちましたか?

解決

私はインタラクティブ開発モードを通じてDataImportHandler(DIH)プロセスを実行します。データベースクエリが期待しているENTITY_IDを取得していることを確認できます。SOLRエントリのタイムスタンプが更新されているため、DIHプロセスは実行されていますが、データの取得中の原因を推測しています。

他のヒント

Solrとのような操作をしていますこれはチュートリアルです: http://www.alphadevx.com/A / 365クリアリングA-SOLR検索インデックス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top