2009-04-01 34 views
3

私はZend_Search_Luceneを使用してサイト検索を実装しています。私は異なるデータタイプ(例えば、ユーザ用、ポスト用など)ごとに別々のインデックスを作成しました。結果は同様にデータ型で除算されますが、異なる結果型の組み合わせを示す 'all'オプションがあります。一度にさまざまなインデックスを検索することは可能ですか?またはすべてのインデックスのすべてをインデックス化する必要がありますか?Luceneを使用して一度に複数のインデックスを検索する検索

更新:ZF 1.8用のreadmeは、ZF 1.8で実行できるようになっていますが、ドキュメントのどこにあるのかを追跡することができませんでした。

答えて

7

だから、いくつかの研究の後、あなたはZend_Search_Lucene_Interface_MultiSearcherを使用する必要があります。私はこれを書いている時点では文書での一切の言及が表示されていないが、あなたはZF 1.8での実際のクラスを見れば、それはとてもwon'w PEARの構文に従っていません。簡単なトンの使用

$index = new Zend_Search_Lucene_Interface_MultiSearcher(); 
$index->addIndex(Zend_Search_Lucene::open('search/index1')); 
$index->addIndex(Zend_Search_Lucene::open('search/index2')); 
$index->find('someSearchQuery'); 

NBですZend_Loader :: loadClassを使用して作業してください

+0

このクラスをどのようにロードするのですか? – Druckles

2

私はZendとどのように統合されていませんが、Luceneでは通常のIndexSearcherの代わりにMultiSearcherを使用します。私はhuddler.comの検索を取り扱う正確にどのようだ

+0

私の検索でこのリンクが見つかりましたが、私はZendソリューションを探しています。しかし、これはそれが完了できることを確認するので、ありがとう。 – Akeem

3

。私は複数のZend_Search_Luceneインデックスをデータ型ごとに1つずつ使用しました。 「すべて」オプションについては、単にすべてのインデックスのすべてを含む別のインデックスを持っていたので、インデックスにドキュメントを追加したときに、適切な「タイプ」インデックスに1回、「すべて」 "インデックス。 Zend Luceneは、他のLuceneの実装と比べて深刻に劣っているので、これが私が見つけた最良の解決策でした。 Zendのポートはluceneクエリー構文のサブセットのみをサポートしていますが、中程度のインデックス(10-100 MB)であっても "a *"と同じくらい単純なクエリーや引用フレーズは適切に実行できませんまったく)。私たちは当社のプラットフォーム上に大規模なサイトを持ってきたとき

、我々は、Zend Luceneのはスケールしないことを発見しました。我々のインデックスは約1.0 GBに達し、簡単なクエリには最大15秒かかりました。いくつかのクエリには1分以上かかりました。インデックスを一から作成するには約20時間かかりました。

私はSolrに切り替えました。 Solrはインデックス作成中に50倍高速化するだけでなく、多くのクエリで1000倍高速に処理できます(ほとんどのクエリは< 5msで終了し、すべてが< 100msで終了します)。また、30,000分(20時間から)で、100,000件以上の文書インデックスをゼロから再構築することができました。今

、すべての「タイプ」フィールドで1つのSolrのインデックスで、私は、検索ごとにインデックスに対して複数のクエリを実行します。各クエリは、それぞれ異なる「タイプ:」フィルタクエリと、「すべて」オプションの「タイプ:」がありません。

インデックスを100MB以上に増やす予定がある場合は、少なくとも1分あたりの検索要求が少なくて済みます。また、高度な検索機能を提供したい場合は、Zend_Search_Luceneを放棄することを強くおすすめします。

+1

あなたは私がやったこともやったことを知ってうれしいです(型フィールドを使ってフィールドを作成し、1つのインデックスを使用しました)。 Solrのヒントをお寄せいただきありがとうございます。これはZend_Luceneを実装して3回目ですので、私はそれをチェックします。 – Akeem

+1

前に答えとしてマークしましたが、ZF 1.8の新しいバージョンでは、ドキュメント内で見つけられませんでしたが、複数のインデックスを検索できるようにしています。 (ソルは、私たちが書いたことの多いものから大きく離れているように見えましたが、私は興味を持っていましたが、私のプロジェクトについてまず考えなければなりません)。 – Akeem

関連する問題