0

Solr 5.4.1 と Nutch 1.11 を実行しています。また、Apache Nifi、特に GetSolr プロセッサも使用しています。

私の SolrRecord の tstamp は、インデックスの値がフェッチされた時刻であることを理解しています。

私が抱えている課題は、GetSolr プロセスが NiFi 無人で動作することです。フィルターする日付フィールドを提供する必要があります。tstamp を使用すると、初めてデータフローに入力されます。その後、tstamp フィルターは、レコードが Solr に取り込まれた時間ではなく、インデックス時間を参照しているため、将来の値を除外します。

私の質問は、クローラーによるフェッチではなく、Solr への挿入のタイムスタンプを含む bin\nutch インデックスの時点で SolrRecord にフィールドを含めるにはどうすればよいかということです。

4

1 に答える 1

1

2つの選択肢があると思います...

Solr schema.xml に新しい日付フィールドを追加し、デフォルト値を NOW にすることができます。

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

TimestampUpdateProcessorFactory を使用できます: https://lucene.apache.org/solr/5_4_1/solr-core/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.html

solrconfig.xml で、これを更新チェーンに追加します。

<updateRequestProcessorChain name="add-timestamp-field">
    <processor class="solr.TimestampUpdateProcessorFactory">
       <str name="fieldName">timestamp</str>
    </processor>
</updateRequestProcessorChain>

更新チェーンを使用する場合、add-timestamp-field チェーンを有効にする必要があります。

<initParams path="/update/**">
  <lst name="defaults">
    <str name="update.chain">add-timestamp-field</str>
  </lst>
</initParams>
于 2016-02-14T05:42:45.203 に答える