次の仮定を考慮してください。
- フルテキスト検索に Lucene 3.0 を使用することを検討している Java 5.0 Web アプリケーションがあります。
- 1000K 以上の Lucene ドキュメントがあり、それぞれに 100 語 (平均) が含まれます。
- 新しいドキュメントは作成直後に検索可能でなければなりません (リアルタイム検索)
- Lucene ドキュメントには、quality という名前の整数フィールドが頻繁に更新されます。
Lucene 3.0 の準リアルタイム検索のコード例 (単純だが可能な限り完全) はどこにありますか?
頻繁に更新される可能性のあるドキュメント フィールド (品質) のいずれかでソートされたクエリ結果を取得することは可能ですか (既にインデックスが作成されているドキュメントの場合)。このようなドキュメント フィールドの更新は、Lucene インデックスの再構築をトリガーする必要がありますか? そのような再構築のパフォーマンスは何ですか?効率的に行う方法 - 完全なソリューションの例/ドキュメントが必要です。
ただし、この場合、インデックスの再構築が必ずしも必要ではない場合、検索結果を効率的に並べ替えるにはどうすればよいですか? 大量のドキュメント (>50K) を返すクエリが存在する可能性があるため、Lucene から並べ替えられていないドキュメントを取得し、品質フィールドで並べ替えて、最後に並べ替えられたリストをページ分割のためにページに分割するのは効率的ではないと考えています。
Lucene 3.0 は Java 内での最良の選択ですか、それとも他のフレームワーク/ソリューションを検討する必要がありますか? SQL Server自体が提供する全文検索かもしれません(私はPostgreSQL 8.3を使用しています)?