SolrでExternalFileFieldを使用することを検討してください。これは、インデックスに直接格納されていない値のストレージを取得する唯一の方法である可能性があります。ただし、ファイルが更新されるたびに再ロードする必要があるため、パフォーマンスが懸念される可能性があります。SolrメーリングリストのExternalFileFieldのベストプラクティスを参照してください。
また、SolrでExternalFileFieldを使用する場合は、ここで説明します。
アップデート:
Solr4.0に付属しているRealTimeGetviaの使用をお勧めします。/get
これにより、探している正確な機能が提供されます。次に、これをドキュメントの更新と組み合わせて、ドキュメント全体を毎回更新する必要がないようにすることができます。
Update2:RealTimeGetComponent
そこで、ハンドラーのソースコードを調べたところ、RealTimeGetComponentがあります。次のように、デフォルトの/select
ハンドラーで有効にしました。主な項目は、&get=true
パラメータを設定し、それを最後のコンポーネントにすることです。
<!-- RealTimeGet Component-->
<searchComponent name="realtimeGet" class="solr.RealTimeGetComponent"/>
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">text</str>
<bool name="get">true</bool>
</lst>
<arr name="last-components">
<str>realtimeGet</str>
</arr>
</requestHandler>
クエリ-/select?q=id%3Amydoc2&wt=xml&id=mydoc2
は次の出力を生成します。
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="id">mydoc2</str>
<str name="wt">xml</str>
<str name="q">id:mydoc2</str>
</lst>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="id">mydoc2</str>
<arr name="title">
<str>realtime-get updated3</str>
</arr>
<long name="_version_">1419891443321798656</long>
</doc>
</result>
<doc name="doc">
<str name="id">mydoc2</str>
<arr name="title">
<str>realtime-get updated - new</str>
</arr>
<long name="_version_">1419892263820984320</long>
</doc>
</response>
したがって、この例では、アイテムをクエリしてから、アイテムid=mydoc2
の最新バージョンを取得し、値id=mydoc2
の違いを示しています。_version_
title
ただし、これを取得するには、更新されたバージョンを取得するために1つまたは複数のドキュメントのIDを渡す必要があります。このコンポーネントは、使用されているrequestHandlerで実行されているクエリの更新されたドキュメントをプルできるようにコーディングされているようには見えません。これは素晴らしい将来の機能になるでしょう。