我一直在使用基于SolrJ的Java客户端,该客户端构建/发送查询到外部Solr实例并将其响应处理回Web应用程序。我有一个名为response.xslt的XSLT,其中指定了本地Solr架构和UI之间的所有必要映射。就我而言,我一直在尝试根据下面的SOLR响应来构建和显示方面:
<facets>
<facet name="domain">
<facetEntry count="10">blogspot.co.uk</facetEntry>
<facetEntry count="6">indys.org.uk</facetEntry>
<facetEntry count="3">royalcanin.co.uk</facetEntry>
<facetEntry count="1">faerie-tales.co.uk</facetEntry>
<facetEntry count="1">polishbeautyclinic.co.uk</facetEntry>
<facetEntry count="1">shua.org.uk</facetEntry>
<facetEntry count="1">sunnyharbour.org.uk</facetEntry>
</facet>
</facets>
我的Web应用程序返回的XML如下所示:
<sear:FACET NAME="local36" COUNT="20">
<sear:FACET_VALUES KEY="blogspot.co.uk" VALUE="10"/>
<sear:FACET_VALUES KEY="indys.org.uk" VALUE="6"/>
<sear:FACET_VALUES KEY="royalcanin.co.uk" VALUE="3"/>
<sear:FACET_VALUES KEY="faerie-tales.co.uk" VALUE="1"/>
<sear:FACET_VALUES KEY="polishbeautyclinic.co.uk" VALUE="1"/>
<sear:FACET_VALUES KEY="shua.org.uk" VALUE="1"/>
<sear:FACET_VALUES KEY="sunnyharbour.org.uk" VALUE="1"/>
</sear:FACET>
然而,错误地生成了UI的最终构面结构。简而言之,它只会多次显示最后一个值“sunnyharbour.org.uk”。我的第一个想法是,由于某些原因,URL中的完整停止/句点会触发此类UI行为,因此我按如下方式对响应进行了编码:
<sear:FACET NAME="local36" COUNT="20">
<sear:FACET_VALUES KEY="blogspot" VALUE="10"/>
<sear:FACET_VALUES KEY="indys" VALUE="6"/>
<sear:FACET_VALUES KEY="royalcanin" VALUE="3"/>
<sear:FACET_VALUES KEY="faerie-tales" VALUE="1"/>
<sear:FACET_VALUES KEY="polishbeautyclinic" VALUE="1"/>
<sear:FACET_VALUES KEY="shua" VALUE="1"/>
<sear:FACET_VALUES KEY="sunnyharbour" VALUE="1"/>
</sear:FACET>
通过这种方式,可以按预期生成构面。
我的回复文件如下所示:
<xsl:template match="facets">
<xsl:apply-templates select="facet" />
</xsl:template>
<xsl:template match="facet">
</xsl:template>
<xsl:template match="facet[@name='domain']">
<sear:FACET NAME="local36" COUNT="{count(facetEntry)}">
<xsl:apply-templates select="facetEntry" />
</sear:FACET>
<xsl:template match="facetEntry">
<sear:FACET_VALUES VALUE="{@count}" KEY="{.}" />
</xsl:template>
我不确定这是最好的行动方案,但原则上我希望能够对URL中的句点进行编码。你能帮帮我吗?
谢谢,
我