【问题标题】:solr: facet search multivalued field containing the same value multiple timessolr:多次包含相同值的构面搜索多值字段
【发布时间】:2017-08-18 13:22:24
【问题描述】:

我的 solr 文档中有这样的字段(JSON 格式):

someField = [Value1, Value2, Value3, Value4,...];

我想知道有多少文档包含这些值。

我正在执行的构面搜索有效,但存在一个问题:这些值代表一个层次结构(由序列表示),并且相同的值可能出现在层次结构的不同级别(代表不同的实体)。

例如

(in document1) someField = [Value1, Value2, Value3, Value4];
(in document2) someField = [Value1, Value3, Value4, Value5];
(in document3) someField = [Value1, Value3, Value3, Value4];

所以我的结果应该是这样的:

Value1 = 3
Value2 = 1
Value3 = 2 (level 2)
Value3 = 2 (level 3)
Value4 = 1 (level 3)
Value4 = 2 (level 4)
Value5 = 1

在插入文档时,我可以看到正在插入

Value1, Value3, Value3

已正确插入(Solr 不会将其转换为 Value1, Value3

我怎样才能在刻面中实现这一点,即。 e.让 Solr 将someFiled 的每一层单独对待,而不是将所有Value3 都算作一个字段?

【问题讨论】:

    标签: json solr


    【解决方案1】:

    你不能。当涉及到构面时,令牌就是令牌。

    但是,您可以在索引时(从您自己的代码)使用辅助字段并将元信息添加到您的标记中,其中包含标记所在的级别。

    因此,对于上面的示例,您将有一个名为 someField_indexed 的第二个字段,其中包含内容:

    [1_Value1, 2_Value2, 3_Value3, 4_Value4]
    [1_Value1, 2_Value3, 3_Value4, 4_Value5]
    [1_Value1, 2_Value3, 3_Value3, 4_Value4]
    

    然后生成的构面将是:

    1_Value1: 3
    2_Value2: 1
    2_Value3: 2
    3_Value3: 2
    3_Value4: 1
    4_Value4: 2
    4_Value5: 1
    

    当您显示来自构面的内容时,删除直到并包括第一个 _ 的所有内容。它还允许您正确过滤值的位置(即仅显示在第二个位置具有 Value3 的文档,使用 fq=someField_indexed:2_Value3

    【讨论】:

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