1

我正在使用 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 没有足够的经验。

4

1 回答 1

3

由于从您的描述中可以看出,您在该字段中设置固定链接,并且该taxon_permalink字段中的值应对应于该字段中的相同类别名称taxon_names。Solr 允许您在多个字段上进行分面,因此您可以在两个字段上进行分面并遍历两个分面结果,从分面值中获取显示名称,taxon_names并从分面值中获取永久链接taxon_permalink

询问:

 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>
于 2013-08-10T02:24:31.413 回答