在SOLR文档中存储复杂(即标签+ id)元数据

Ach*_*him 8 lucene solr

我使用SOLR来存储具有由多个值组成的元数据的文档.通常是带标签的id.一个简单的例子是城市的名称和该城市的唯一ID.需要身份证,因为不同的城市可以拥有相同的名称,如德国的柏林和美国的柏林.这个名字是显而易见的,因为我想搜索那个字符串.

如果我使用facet,我想回到标有"Berlin"的两个方面.如果我将搜索(使用其他元数据字段)限制为来自德国的文档,我希望德国柏林只能获得一个方面.如果我将id和label存储在两个单独的SOLR字段中,显然这不起作用.

我认为这不是一个不常见的要求,但我无法找到任何有用的信息.我目前的方法是:

  • 在Java中实现完整的自定义字段类型:很难为我估算,因为我目前只是SOLR用户,而不是SOLR开发人员.

  • 将id和label放在一个字符串中(如"123:Berlin"和"456:Berlin"),并使用自定义分析器在schema.xml中定义自定义字段类型,该分析器会对值进行拆分.对我来说听起来很合理,但我不能100%确定它是否适用于切面.

  • 我找到了一些子字段的引用,但只在较旧的页面上,我无法找到有用的文档.

在SOLR中有一些众所周知的解决方法吗?

Jay*_*dra 1

似乎没有现成的解决方案。

  1. 你的#2 应该可以通过一些客户端修改正常工作。
  2. 您可以使用 id_name 作为单个字符串字段对数据进行索引。需要在索引时更改。如果您使用 DIH,则使用 Transformer 会更容易。
  3. 现在,每个 id 都有唯一的 Facet,并且在客户端,您始终可以拆分 Facet 进行显示。

您还可以检查 Facet Pivots,它可以提供Hierarchical Faceting