Luk*_*rak 2 search attributes patch sitecore nodes
如果还有其他几个具有相同属性的节点,我该如何修补指定的节点?
我需要在ContentSearch部分中为捷克语言修补分析器,但是所有节点都以
<mapEntry type =“ Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry,Sitecore.ContentSearch.LuceneProvider ”>
该配置的一部分看起来像这样
...</maEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">ar-AE</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">pt-BR</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.Contrib.BrazilianAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">cs-CZ</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry>...
Run Code Online (Sandbox Code Playgroud)
我需要在第二个节点中修补(在我们的示例中)defaultAnalyzer。但是第二个节点不是现实中的第二个节点,但可能是第三个,第七个等。我想我需要通过指定的内部节点找到“ mapEntry”节点。
如果我用这个
<map hint="list:Add">
<!-- Patch analyzer for Czech language -->
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers">
<patch:attribute name="type">MySolution.MetroAsciiFoldingAnalyzer, MySolution</patch:attribute>
</param>
</param>
</mapEntry>
</map>
Run Code Online (Sandbox Code Playgroud)
它将修补第一个节点。
我在此问题中发现了类似的内容在Web.config Transform中基于子节点值选择节点,但是据我了解,我将整个节点替换为自定义节点,但是....是必要的吗?
您链接的答案使用SlowCheetah进行转换,我想您正在尝试使用Sitecore配置补丁来执行此操作...
因为要基于子值选择节点,所以可以使用该contains功能检查值。但是您只能修补该特定节点,而不能为查询选择它。因此,您基本上必须替换整个节点。
建议您先删除现有cs-CZ条目,然后再添加自己的条目。请注意,我必须使mapEntry节点更具唯一性,因此我添加了一个desc属性,否则它将覆盖第一个匹配项(在本例中为ja-JP)
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" >
<sitecore>
<contentSearch>
<indexConfigurations>
<defaultLuceneIndexConfiguration>
<analyzer>
<param desc="map">
<map>
<mapEntry patch:instead="*[contains(.,'cs-CZ')]">
<patch:delete />
</mapEntry>
<mapEntry desc="cs-CZ Analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">cs-CZ</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="MySolution.MetroAsciiFoldingAnalyzer, MySolution">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
</map>
</param>
</analyzer>
</defaultLuceneIndexConfiguration>
</indexConfigurations>
</contentSearch>
</sitecore>
</configuration>
Run Code Online (Sandbox Code Playgroud)