我正在编写一个基于 Zend Search Lucène 的搜索引擎。
我的对象有许多不同的字段(10 种文本类型),我想知道哪种方式最好。 (所有字段都未存储,只是索引,我不需要恢复它们。)
一个大字段(许多小字段的串联):
$content = $textfield1 . $textfield2 . $textfield3 . $textfield4 ...
Zend_Search_Lucene_Field::unStored("content", $content);
或者
许多小田地:
Zend_Search_Lucene_Field::unStored("content", $textfield1);
Zend_Search_Lucene_Field::unStored("content2", $textfield2);
Zend_Search_Lucene_Field::unStored("content3", $textfield3);
....
....
每个字段可能包含大量文本(大约 500 个单词或更多)。
最佳答案
如果这些字段的内容相似,那么从性能角度来看,拥有一个字段比多个字段更好(假设大多数时候您想要搜索所有字段)。
Lucene 将字段术语存储在一个大字典中,以 {field}{term}
形式串联,因此如果您不需要单独处理字段,最好将它们放入一个包中。这样,您将拥有更小的字典(特别是,如果这些字段的术语相似)和搜索过程中更少的磁盘查找(扫描的帖子列表的总和将保持大致相同)。
关于zend-framework - 什么是更好的 ?一大片田地还是许多小田地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213092/