我是在写一个基于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字以上)。
答案 0 :(得分:2)
如果这些字段的内容相似,那么在性能方面,最好有一个字段而不是几个字段(假设大多数时候你想搜索所有字段)。
Lucene将字段中的字段存储在一个大字典中作为表单{field}{term}
的串联,因此如果您不需要单独处理字段,最好将它们放入一个包中。这样,您将拥有较小的字典(特别是,如果这些字段的术语相似),并且在搜索期间搜索的磁盘数量较少(扫描的过帐列表总和将保持大致相同)。