Sitecore-具有与其他节点相同属性的补丁节点

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中基于子节点值选择节点,但是据我了解,我将整个节点替换为自定义节点,但是....是必要的吗?

jam*_*kam 5

您链接的答案使用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)