[PC] SortedDocValuesField()関数を登録した内容をLukeで確認してみました

Sort用のフィールド

先日、全文検索ソフトのLuceneのソートプログラムをC#に移植したことを紹介しました。ソートを使ってFieldの最大値と最小値とを取得しようと考えています。最終目的は、ファイルのLastModifiedをDocumentの中に保存しておいて、最大値を求めて、その値を比較して文書をインデックスするか否か判断するインデックス作成プログラムを作りたいと考えています。

SortedDocValuesField()

SortedDocValuesField()を使えば、ソートする値を保存できるFieldが作れるとのことで保存してみました。SortedDocValuesField()
まずは上記のコードで赤枠を削除した状態でコンパイルしてインデックスを作成しました。Lukeでインデックスを見るとSortedDocValuesField()で保存したFieldは、項目としては存在しますが、Valueはグレイアウトしています。解説に書いてあった通り、中身は保存されていません。Only SortedDocValuesField

次に赤枠部分を削除しないでインデックス作成をすると、次のように値が入るようになりました。しかも”modified”のFieldの属性を見るとちゃんとDsortedと、ソートの属性も残しつつ、データ保存ができていました。

SortedDocValuesField with StoredField まとめ

ソートのデータを保存するためのSortedDocValuesField()関数の挙動をLukeを使って調べてみました。自分の勉強のため少しずつ書き残していこうかと思います。ではでは。

Translate »