スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Solrで一部のフィールドの値だけを変更する手段は???

今回も、Solrについてです。

登録済みのレコードの、ある一部分のフィールドの値だけを変更したいのです。
(※将来のSolrでは実現を検討されているようです。)

例えば

□値を変更するタイプ

 ・「削除フラグ」 アプリケーション側で論理削除を実装する場合、削除フラグ(boolean)のフィールドが必要です。
  (論理削除された場合は、削除フラグの値をtrueに変更します。)

 ・「履歴管理」 過去の版も含めて検索対象として管理する場合、版番号とは別に、その版が最新版かどうかのフラグ(boolean)が必要です。
  (より新しい版を追加する場合、旧版について今まで最新版であることを示していたフラグをOFFにし、追加した版のフラグをONにします。)

□値を追加・削除するタイプ

 ・「タグ」 あるオブジェクト(レコード)に、任意にタグ(String)をつける機能を実装する場合。
  (タグを追加する場合、今までに設定されているタグはそのままで、新しいタグを追加する必要があります。
  また、タグを削除する場合も、削除対象のタグ以外はそのままにしておく必要があります。)

 ・「お気に入り」 タグと同様な機能ですが、お気に入りの機能を実装する場合。
  (お気に入りとするオブジェクト(レコード)のあるフィールドに、自分のログインIDを追加するでしょう。
  その際、他の人のIDはそのままにしておく必要があります。)



現状、登録済みのレコードの、ある一部分のフィールドの値だけを変更することができないです。

上記の機能を実現する場合、以下の手順が必要となります。
 1.まず、対象となるレコードの全フィールドの値を取得する。
 2.該当フィールドの値を変更する。
 3.全フィールドを対象にupdateする。

フィールドの数が多い、サイズが大きい場合は、3.のコストが大きくなってしまいます。
(例えば、booleanの値を変えるだけのために、本文やタイトルを再インデックス化する必要があります)




「値を変更するタイプ」で、booleanの値を変更することが難しければ、例えば、booleanの値を削除(nullに変更)することでも良いのですが。。。

なんとかなりませんでしょうか。。。
スポンサーサイト

コメントの投稿

非公開コメント

残念ながら。。。

まだなさそうですね。早く実装してくれると助かるんですが。

ということで、愚痴っていてもしょうがないので。
私がざっと考えた案です。

1. DIHの差分インポートで頑張る?
  私自身があまり利用しないDIHですが、差分管理が一応可能です。
  自分で登録するよりは楽かなぁと。

2. Joinとか使ってみる。(trunkだけど)
  trunkに入っているJoinを利用してみるのもありかと。
  これまた、私はまだ触ったことないので動くかどうかも怪しいですが。。。

3. 構成で頑張る?
  最新版がはいっているSolrのサイズを小さくすることで、更新を早くする?
  @haruyamaさんがツイートされてた感じですかね。

4. ロンウイットのサブスクリプションを使う
  こちらに記載がありますが、リアルタイム在庫検索を活用するとできる?
  http://www.rondhuit-demo.com/RCSS/api/

5. 自作してSolrのコンポーネントを作る?
  これは、ハードル高いですね。。。


検索フォーム
RSSリンクの表示
リンク
exabugsをフォローしましょう
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。