我有一个相当简单的Umbraco解决方案,它使用Lucene进行前端站点搜索。 该网站可以选择(通过宏)在多个页面上包含相同的文本/节点,因此他们只需将该文本保留在一个位置。
但是,由于这是在前端“生成”,在加载时,Lucene为页面编制索引,并且不对前端进行爬网,因此这些文本不会包含在搜索中。
我怎么能这样做,让Lucene将这些文本包含在他们所包含的每个页面上?
答案 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
}
}