gpt4 book ai didi

lucene - Sitecore 7 Lucene : strip HTML from computed field

转载 作者:行者123 更新时间:2023-12-03 21:34:43 25 4
gpt4 key购买 nike

我正在将计算字段中“文章”节点的所有“段落”子节点粘贴在一起。这是为了实现一篇文章可以通过段落内容进行搜索。

为此,我在 <fields hint="raw:AddComputedIndexField"> 下执行了以下操作节点:

<field fieldName="Paragraphs" storageType="YES" indexType="TOKENIZED">
MyWebsite.ComputedFields.Paragraphs,MyWebsite
</field>

在这个计算字段中,我将段落 HTML 主体连接在一起。我原以为 Sitecore 会为我去除 HTML(就像它对富文本字段所做的那样),但它并没有。

对于“富文本”字段,可能是 RichTextFieldReader 去除了 HTML 标记。反编译代码证实了这一点。RichTextFieldReader 在 FieldReaders 中配置部分。尝试添加 raw:AddFieldReaderByFieldName下面的部分,似乎没有做任何事情。

完整部分如下所示,但不适用于此设置:

<FieldReaders type="Sitecore.ContentSearch.FieldReaders.FieldReaderMap, Sitecore.ContentSearch">
<mapFieldByTypeName hint="raw:AddFieldReaderByFieldTypeName">
....default stuff here...
</mapFieldByTypeName>
<mapFieldByFieldName hint="raw:AddFieldReaderByFieldName">
<fieldReader fieldName="Paragraphs" fieldReaderType="Sitecore.ContentSearch.FieldReaders.RichTextFieldReader, Sitecore.ContentSearch"></fieldReader>
</mapFieldByFieldName>
</FieldReaders>

关于如何实现这一点的任何其他线索(通过配置,而不是通过使用 HTML 敏捷包等)

最佳答案

问题是 mapFieldByFieldName 期望从 Sitecore 项目中匹配具有该名称的字段,而不是索引中的自定义计算字段,因此永远不会调用字段读取器。

我不知道如何从配置中实现这一点,但如果您不想直接使用 HAP 但愿意使用一些代码,那么在您将字段一起粘贴到计算字段类中后,只需执行 Sitecore 在GetPlainText() 方法:

string input = "concatenated string";
return HttpUtility.HtmlDecode(Regex.Replace(input, "<[^>]*>", string.Empty));

或使用 util 方法 Sitecore.StringUtil.RemoveTags(text)

关于lucene - Sitecore 7 Lucene : strip HTML from computed field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com