Umbraco检查/ lucene搜索 - 共享内容?

时间:2015-12-07 09:37:21

标签: lucene umbraco7

我有一个相当简单的Umbraco解决方案,它使用Lucene进行前端站点搜索。 该网站可以选择(通过宏)在多个页面上包含相同的文本/节点,因此他们只需将该文本保留在一个位置。

但是,由于这是在前端“生成”,在加载时,Lucene为页面编制索引,并且不对前端进行爬网,因此这些文本不会包含在搜索中。

我怎么能这样做,让Lucene将这些文本包含在他们所包含的每个页面上?

1 个答案:

答案 0 :(得分:1)

你必须挂钩由Examine公开的索引事件来解析宏中的字段并从宏节点中检索文本块。

您需要在启动事件处理程序中的相关索引上挂钩“GatheringNodeData”事件,例如。

ExamineManager.Instance.IndexProviderCollection["IndexName"].GatheringNodeData
             += ExamineEvents_GatheringNodeData;

在您的函数中,您可以处理字段并编辑字段,例如:

void ExamineEvents_GatheringNodeData(object sender, IndexingNodeDataEventArgs e)
{
    //check if this is 'Content'
    if (e.IndexType == IndexTypes.Content)
    {
         //access node with e.Node, access Examine fields with e.Fields
    }
}