Lucene索引字段值将从所有html标记中删除

Lucene索引字段值将从所有html标记中删除,lucene,sitecore,Lucene,Sitecore,我有一个Lucene索引,其中一个字段映射到Sitecore的富文本字段 由于此字段值包含共享模板的大多数项目的html内容,因此我希望在获取项目的字段值时返回html内容。但是,我注意到返回的值被去掉了所有html标记 我试着把索引类型改成“unknotized”。但这并没有解决问题。我知道Lucene这样做是为了允许基于该字段进行搜索。但这不是我的要求,我希望覆盖此行为。之所以发生这种情况,是因为有一个RichTextFieldReader分配给html和richtext字段: 在Sit

我有一个Lucene索引,其中一个字段映射到Sitecore的富文本字段

由于此字段值包含共享模板的大多数项目的html内容,因此我希望在获取项目的字段值时返回html内容。但是,我注意到返回的值被去掉了所有html标记


我试着把索引类型改成“unknotized”。但这并没有解决问题。我知道Lucene这样做是为了允许基于该字段进行搜索。但这不是我的要求,我希望覆盖此行为。

之所以发生这种情况,是因为有一个
RichTextFieldReader
分配给
html
richtext
字段:


在Sitecore 8.1中,它是在
Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config
中定义的

它使用
HtmlField.GetPlainText()
删除所有标记

您可以尝试添加另一个与
节相同级别的节,并使用以下内容:



通过
fieldName
进行映射比通过字段类型进行映射具有更高的优先级,因此它将使用为字段指定的
fieldRendered
,而不是使用为字段类型指定的映射。

您应该能够创建计算索引字段,这将在索引中正确保存HTML

public class TileHtml : IComputedIndexField
{
    public object ComputeFieldValue(IIndexable indexable)
    {
        Item indexedContent = indexable as SitecoreIndexableItem;

        if (indexedContent != null && indexedContent.Fields[ITileConstants.TileHtmlFieldName] != null && !string.IsNullOrWhiteSpace(indexedContent.Fields[ITileConstants.TileHtmlFieldName].Value))
        {
            return indexedContent.Fields[ITileConstants.TileHtmlFieldName].Value;
        }

        return null;
    }

    public string FieldName { get; set; }
    public string ReturnType { get; set; }
}
然后可以在Lucene索引中注册该文件

<fields hint="raw:AddComputedIndexField">
<field fieldName="TileHtml" storageType="YES" indexType="TOKENIZED">Namespace.TileHtml, Assembly</field>

Namespace.TileHtml,程序集

您使用的是哪个版本的Sitecore?刚刚尝试了这个…但在打开索引管理器后,它给了我对象引用错误。我还将fieldreadertype更改为下面的一种,但没有成功:您确定没有任何打字错误,并且您复制了我粘贴的内容吗
hint=“AddFieldReaderByFieldName”
fieldReader fieldName=“…”
?对象引用的堆栈跟踪是什么?我正在使用Sitecore 7.5,此解决方案对我不起作用,有任何建议,我有自定义lucene索引配置,一些索引有html,但其他索引没有