Indexing 如何为Sitecore实现向Solr索引中的_内容字段添加文本?

Indexing 如何为Sitecore实现向Solr索引中的_内容字段添加文本?,indexing,sitecore,solr4,sitecore7.5,Indexing,Sitecore,Solr4,Sitecore7.5,这是针对Sitecore 7.5-Solr 4.7实现的。我希望能够修改Solr中存储在_content字段中的文本。我相信Sitecore会以某种方式聚合索引中_content字段中某个项目的所有内容字段。(我认为这是正确的)在索引时,我希望能够编写自己的代码,可能修改Solr中存储在_content字段中的文本。这可能吗?你知道我该怎么做吗?\u content是一个计算字段,这意味着在对项目进行爬网时解析该值。您将看到computed字段在配置中定义: 我建议对type属性中指定的类进

这是针对Sitecore 7.5-Solr 4.7实现的。我希望能够修改Solr中存储在_content字段中的文本。我相信Sitecore会以某种方式聚合索引中_content字段中某个项目的所有内容字段。(我认为这是正确的)在索引时,我希望能够编写自己的代码,可能修改Solr中存储在_content字段中的文本。这可能吗?你知道我该怎么做吗?

\u content
是一个计算字段,这意味着在对项目进行爬网时解析该值。您将看到computed字段在配置中定义:


我建议对
type
属性中指定的类进行反编译,以查看它的功能。然后可以创建自己的计算字段类(或从该类继承),并替换type属性

计算字段的使用非常简单。它们实现
IComputedIndexField
,这需要
ComputeFieldValue
方法。该方法接受类型为
IIndexable
(在大多数情况下,具体类是
)的参数,并在每次对项进行爬网时调用该参数

因此,在
ComputeFieldValue
方法中,您可以将
Iindexable
强制转换为
,然后返回要从该项中包含的所有字段值的串联字符串

有关计算字段的详细信息,请参见此处:


据我所知,您可以使用自己的
IComputedIndexField
实现添加另一个(单独的)
\u内容
字段。所有添加的同名字段的结果值将被加总


另见:是的,我沿着那条路走。我觉得奇怪的是,它引用的类是Sitecore.ContentSearch.ComputedFields.MediaItemContentExtractor。当我查看该类的代码时,它似乎只适用于媒体项。对于每个非媒体内容项,它似乎都返回NULL。因此,从我所能收集到的信息来看,除媒体项目外,内容将为空。我觉得这很奇怪。也许我误解了内容字段实际上是什么。我假设_content是所有类型内容项的所有字段的聚合。