Solr:Facet one field with two outputs

时间:2013-08-09 18:34:37

标签: solr faceted-search facet

我正在使用Solr为产品编制索引并将它们组织成几个类别。每个文档都有一个taxon_names多值字段,其中类别存储为产品的人类可读字符串。

现在,我想从Solr中获取所有类别,并使用可点击的链接显示给用户,而无需再次访问数据库。在索引时,我从MySQL数据库中获取每个类别的永久链接,该数据库存储为多值字段taxon_permalinks。为了生成产品的链接,我需要类别的人类可读格式及其永久链接(否则,当您使用类别的简单可读名称时,您的浏览器中会出现如此丑陋的URL,例如%20表示空间)

当我使用http://localhost:8982/solr/default/select?q=*%3A*&rows=0&wt=xml&facet=true&facet.field=taxon_names进行方面搜索时,我会得到一个包含其计数的人类可读分类单列表。基于此列表,我想创建链接,这样我就不必再次访问数据库了。

那么,是否可以从Solr中检索不同类别的匹配永久链接?例如,我得到这样的XML:

<response>
<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">0</int>
</lst>
<result name="response" numFound="6580" start="0"/>
  <lst name="facet_counts">
  <lst name="facet_queries"/>
  <lst name="facet_fields">
  <lst name="taxon_names">
    <int name="Books">2831</int>
    <int name="Music">984</int>
      ...
  </lst>
</result>

taxon_names数组中,我需要永久链接的名称。

也许可以通过在配置XML中定义自定义字段类型来实现。但为此,我对Solr没有足够的经验。

1 个答案:

答案 0 :(得分:3)

由于您的说明中显示您正在taxon_permalink字段中进行永久链接,因此该字段中的值应与taxon_names字段中的相同类别名称相对应。 Solr允许您在多个字段上进行构面,因此您可以只在两个字段上进行构面,并从两个构面结果中获取taxon_names构面值中的显示名称以及taxon_permalink构面值的永久链接。 / p>

查询:

 http://localhost:8982/solr/default/selectq=*%3A*&rows=0&wt=xml
   &facet=true&facet.field=taxon_names&facet.field=taxon_permalink

您的输出应该类似于以下内容:

<response>
<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">0</int>
</lst>
<result name="response" numFound="6580" start="0"/>
  <lst name="facet_counts">
  <lst name="facet_queries"/>
  <lst name="facet_fields">
  <lst name="taxon_names">
    <int name="Books">2831</int>
    <int name="Music">984</int>
      ...
  </lst>
  <lst name="taxon_permalink">
    <int name="permalink1">2831</int>
    <int name="permalink2">984</int>
      ...
  </lst>
</result>