2012-02-09 68 views
2

我正在寫基於Zend SearchLucène的搜索引擎。有什麼更好?一個大場還是很多小?

我的對象有很多不同的字段(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

如果這些字段的內容相似,那麼在性能方面,最好有一個字段比多個字段更好(假設大多數時候你想搜索所有字段)。

Lucene將字段條款存儲在一個大字典中作爲表格{field}{term}的連接,所以如果您不需要單獨處理字段,最好將它們放入一個包中。這樣,如果搜索過程中的磁盤搜索次數減少(尤其是如果這些字段的條件相似),並且磁盤搜索次數會減少(掃描的發佈列表總和大致保持不變),那麼您將擁有較小的字典。

+0

非常啓發 – TeChn4K 2012-02-10 11:50:43

相關問題