2012-02-09 8 views
2

私はZend SearchLucèneに基づいて検索エンジンを作成しています。何が良いですか? 1つの大きなフィールドまたは多くの小さな?

オブジェクトにはさまざまなフィールド(10種類のテキストタイプ)があり、どの方法が最適かを知りたいと思います。 (すべてのフィールドは、単にインデックス付け、私はそれらを回復するために非保存の必要はありませんされている。)

一つの大きなフィールド、(多くの小さなフィールドの連結):

$content = $textfield1 . $textfield2 . $textfield3 . $textfield4 ... 
Zend_Search_Lucene_Field::unStored("content", $content); 

OR

多くの小さなフィールドを:

Zend_Search_Lucene_Field::unStored("content", $textfield1); 
Zend_Search_Lucene_Field::unStored("content2", $textfield2); 
Zend_Search_Lucene_Field::unStored("content3", $textfield3); 
.... 
.... 

各フィールドには多くのテキスト(約500語以上)が含まれている場合があります。

答えて

2

これらのフィールドの内容が類似している場合は、パフォーマンス上の理由から、複数のフィールドよりも1つのフィールドを持つほうがよいでしょう(ほとんどの場合、すべてを検索したいと仮定します)。

Luceneはフィールドの用語を1つの大きな辞書にフォーム{field}{term}を連結して格納しています。したがって、フィールドを別々に扱う必要がない場合は、1つのバッグに入れるほうが良いです。この方法では、小規模な辞書(特に、これらのフィールドの用語が類似している場合)と、検索中のディスクのシークが少なくなります(スキャンされた投稿の合計はほぼ同じです)。

+0

非常に啓発 – TeChn4K

関連する問題