2

デスクトップアプリケーションでCLuceneインデックスを作成する必要があるアプリケーションを開発していますが、iOSデバイスでの(読み取り専用)検索用に複製され、インデックスが更新されると効率的に更新されます。

インデックスが変更されるたびにインデックス全体を再ダウンロードするだけでなく、ここでのオプションは何ですか?CLuceneはそれ自体ではレプリケーションをサポートしていませんが、Solr(Luceneの上に構築されている)はサポートしているため、明らかに可能です。Solrがこれをどのように実行し、同様の機能を実装するためにどのようにアプローチするかを知っている人はいますか?

これが不可能な場合、CLuceneよりも私のニーズを満たす(Javaベースではない)全文検索の実装はありますか?

デスクトップアプリケーションのクエリはオプションではありません。モバイルアプリケーションはオフラインで検索できる必要があります。

4

1 に答える 1

4

Luceneインデックスは、write-onceread-manyセグメントに基づいています。これは、新しいドキュメントがLuceneインデックスにコミットされたときに、取得する必要があるのは次のことだけであることを意味します。

  • 新しいセグメント、
  • マージされたセグメント(存在する場合、単一のセグメントにマージされた古いセグメント)、
  • セグメントファイル(現在のセグメントに関する情報を格納します)。

これらの新しいファイルがすべてダウンロードされると、マージされたセグメントファイルを安全に削除できます。変更を考慮に入れるには、IndexReaderを再度開きます。

Solrにはこれを行うためのJava実装がありますが、それがいかに単純であるかを考えると、rsyncなどの同期ツールを使用することでもうまくいきます。ちなみに、これはSolr1.4より前のSolrレプリケーションの仕組みですが、rsyncレプリケーションに関するいくつかのドキュメントをwikiで見つけることができます。

于 2012-03-20T20:32:59.133 に答える