我有一个Lucene索引,其中一个字段映射到Sitecore的富文本字段.
由于此字段值包含共享模板的大多数项目的html内容,因此我希望在获取项目的字段值时返回html内容.但是,我注意到返回的值被剥夺了所有html标签.
我尝试将INDEXTYPE更改为"UNTOKENTIZED".然而,这并没有解决问题.我知道Lucene这样做是为了允许基于该字段进行搜索.但这不是我的要求,我希望这种行为被覆盖.
发生这种情况是因为有一个RichTextFieldReader分配给html和rich text字段:
<fieldReader
fieldTypeName="html|rich text"
fieldNameFormat="{0}"
fieldReaderType="Sitecore.ContentSearch.FieldReaders.RichTextFieldReader, Sitecore.ContentSearch" />
Run Code Online (Sandbox Code Playgroud)
在 Sitecore 8.1 中,它是在Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config.
它使用 删除所有标签HtmlField.GetPlainText()。
您可以尝试添加与部分同一级别的另一个部分<mapFieldByTypeName hint="raw:AddFieldReaderByFieldTypeName">,并使用类似以下内容的内容:
<mapFieldByFieldName hint="AddFieldReaderByFieldName">
<fieldReader
fieldName="yourFieldName"
fieldReaderType="Sitecore.ContentSearch.FieldReaders.DefaultFieldReader, Sitecore.ContentSearch" />
Run Code Online (Sandbox Code Playgroud)
映射依据fieldName比按字段类型映射具有更高的优先级,因此它将使用fieldRendered为您的字段指定的值,而不是使用为您的字段类型指定的值。