現時点では、コンパスがこの作業を処理できることを知っています。しかし、コンパスを使用したインデックス作成はかなり高価に見えます。より軽い代替品はありますか?
5 に答える
正直なところ、インデックス作成に関して Lucene が Compass よりも軽くなるかどうかはわかりません (なぜなら、Compass はそのために Lucene を使用しないのでしょうか?)。
とにかく、あなたが代替品を求めたので、GAELuceneがあります。その発表を以下に引用します。
「 Google アプリ エンジンで Lucene を実行できますか? 」という議論に啓発されて、Google データストア ベースの Lucene コンポーネントである GAELucene を実装しました。これは、Google アプリ エンジンで検索アプリケーションを実行するのに役立ちます。
GAELucene の主なクラズは次のとおりです。
- GAEDirectory - Google データストアに基づく読み取り専用ディレクトリ。
- GAEFile - インデックス ファイルを表し、ファイルのバイト コンテンツは複数の GAEFileContent に分割されます。
- GAEFileContent - インデックス ファイルのセグメントを表します。
- GAECategory - さまざまなインデックスの識別子。
- GAEIndexInput - メモリ常駐 IndexInput? RAMInputStream のような実装。
- GAEIndexReader - IndexReader のラッパー? GAEIndexReaderPool にキャッシュされたもの
- GAEIndexReaderPool - GAEIndexReader のプール
次のコード スニペットは、GAELucene do 検索の使用方法を示しています。
Query queryObject = parserQuery(request); GAEIndexReaderPool readerPool = GAEIndexReaderPool.getInstance(); GAEIndexReader indexReader = readerPool.borrowReader(INDEX_CATEGORY_DEMO); IndexSearcher searcher = newIndexSearcher(indexReader); Hits hits = searcher.search(queryObject); readerPool.returnReader(indexReader);
nabble に関する議論全体を読むことを強くお勧めします。非常に有益です。
Compass に関しては、Shay Banon が App Engine で Compass を使用する方法を詳述したブログ エントリを次の URL に書きました: http://www.kimchy.org/searchable-google-appengine-with-compass/
Apache Luceneは、Java での全文索引作成のデファクト チョイスです。Compass Coreには、「( Jdbcを使用して) データベース内にインデックスを格納するための Lucene Directory の実装。Compass コード ベースから分離されており、純粋な Lucene アプリケーションで使用できます。」が含まれているようです。プラス他の多くのもの。Lucence コンポーネントだけを分離して、いくつかのライブラリを取り除き、より軽量にすることもできます。それか、コンパスを完全に捨てて、純粋な飾り気のないルセンを使用してください。
Google App Engine の場合、私が見た唯一のインデックス作成ライブラリはappengine-searchで、このページで使用方法が説明されています。私はそれを試していません。
私はLucene (Compass のベース) を使用しましたが、比較的低コストでうまく機能することがわかりました。インデックス作成は、アプリに適した時間にスケジュールできるタスクです。
この SO スレッドでは、Xapianやminionなど、いくつかの代替インデックス プロジェクトについて言及されています。ただし、Lucene は私が必要とするすべてのことを非常にうまく行ったので、これらのいずれもチェックしていません。
Lucene を GAE で実行したい場合は、LuGAEneも参照してください。これは、GAE 用の Lucene のディレクトリの実装です。
使用方法は実にシンプルで、Lucene の標準ディレクトリの 1 つを次のように置き換えるだけです。GaeDirectory
Directory directory = new GaeDirectory("MyIndex");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer);
IndexWriter writer = new IndexWriter(directory, config);
...
gaeluceneは「メンテナンス モード」にあるようで (2009 年 9 月以降はコミットされていません)、アプリケーションでObjectifyバージョン 4を使用している場合、 lucene-appengineは (まだ) 機能しません。
免責事項: 私は LuGAEne の作成者です。