什么是更好的 ?一个大场还是很多小?

时间:2012-02-09 14:53:52

标签: zend-framework lucene zend-search-lucene

我是在写一个基于ZendSearchLucè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字以上)。

1 个答案:

答案 0 :(得分:2)

如果这些字段的内容相似,那么在性能方面,最好有一个字段而不是几个字段(假设大多数时候你想搜索所有字段)。

Lucene将字段中的字段存储在一个大字典中作为表单{field}{term}的串联,因此如果您不需要单独处理字段,最好将它们放入一个包中。这样,您将拥有较小的字典(特别是,如果这些字段的术语相似),并且在搜索期间搜索的磁盘数量较少(扫描的过帐列表总和将保持大致相同)。