我有一个Sitecore内容结构,其中任何单个项都可以有许多子项,用于存储列表的可枚举内容(显然是一种相当标准的方法)。我希望为这些项目编制索引,但将它们的索引数据存储在Lucene中的父文档中。这将有望加快搜索速度,通过节省时间对多个有效指向同一URL的结果进行排序。下面是我将实现的自定义索引器的一些基本代码。
有人能告诉我这是(a)可能的还是(b)一个好主意吗?我看到的主要问题是Lucene文档看起来已经被创建了-我需要删除它吗?此外,如果父项的Lucene文档不存在,是否需要创建它?当父项被索引时,它是否会被覆盖/丢失。看起来有点冲突。
另一个选项是,我不索引子项,而是在索引父项时获取它们的值。现在我想起来了,这似乎是更好的方式。。意见?
public class CustomIndex : Sitecore.Data.Indexing.Index
{
public CustomIndex(string indexName): base(indexName) {}
protected override void AddFields(Item item, Document document)
{
//is item a sub-item (promo item)
if (...)
{
//delete the sub-item lucene doc
DeleteDoc(document); //is this possible or needed?
//get parent item
Item parentItem = item.Parent;
//get lucene document for parent item
Document parentDoc = GetParentDoc();
//add fields to parent item lucene document
parentDoc.Add(...);
parentDoc.Add(...);
}
else
{
base.AddFields(item, document);
}
}
}