【问题标题】:Sitecore - patch node with the same attributes as the othersSitecore - 与其他节点具有相同属性的补丁节点
【发布时间】:2014-06-23 09:01:08
【问题描述】:

如果有多个其他节点具有相同的属性,我如何修补指定的节点?

我需要在 ContentSearch 部分为捷克语修补分析器,但所有节点都以

部分配置如下所示

...</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>...

我需要修补(在我们的示例中)第二个节点中的 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>

它将修补第一个节点。

我在这个问题Select node based on child node value in Web.config Transform 中发现了类似的东西,但据我所知,我会用我的自定义节点替换整个节点,但是....有必要吗?

【问题讨论】:

    标签: search attributes sitecore nodes patch


    【解决方案1】:

    您链接到的答案使用SlowCheetah 进行转换,我认为您正在尝试使用Sitecore config patch 执行此操作...

    因为您是根据子值选择节点,所以可以使用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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2017-06-14
      相关资源
      最近更新 更多