0

私のsolrスキーマ(Solr4.1)には2つのフィールドがあります

<timestamp>
<status>

14 日以上経過したドキュメントのステータスを更新/変更したいが、インデックスからは削除したくない。

私は現在このようにそれらを削除します

curl http://localhost/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>timestamp:[* TO NOW-14DAYS] </query></delete>'

タイムスタンプ値によって決定されるドキュメントの年齢に基づいて、ステータスフィールドを「期限切れ」または「アーカイブ済み」などの公称テキスト値に変更できるかどうか疑問に思っています。

ありがとう

4

1 に答える 1

0

私はこれを次のように解決することができました。Solrはクエリなどで削除できますが、クエリで更新できないようです。私の場合、ドキュメントのフィールドを更新したいだけで、ドキュメントのインデックスを再作成したり、削除したりせず、年齢に基づいて更新したいだけです(たとえば、ドキュメントの有効期限が切れても、必要に応じて見つけることができるようにインデックスに保持します) 。

私が行ったことは、csv応答ライターを使用することでした。クエリのタイムスタンプ:[*TONOW-14DAYS]をcsvファイルに保存しました。これで、上記のクエリ(または必要なクエリ)のすべてのドキュメントを含むcsvファイルができました。

次に、変更する値をすばやく検索/置換できます。たとえば、「公開済み」から「未公開」などに変更します。csvを保存します。インデックス/コミットを再実行します。

全部で約5分かかりました。

Solr4.xは本当にクエリによる更新フィールドを必要としますが、これは私にもたらされた本当に簡単な回避策でした。

于 2013-03-14T01:15:11.477 に答える