如何使用Solr索引哈希数组

Ist*_*van 7 indexing json solr

我需要索引具有以下数据结构的专利目录:

  "cpc": [
    {
      "class": "61",
      "section": "A",
      "sequence": "1",
      "subclass": "K",
      "subgroup": "06",
      "main-group": "45",
      "classification-value": "I"
    },
    {
      "class": "61",
      "section": "A",
      "sequence": "2",
      "subclass": "K",
      "subgroup": "506",
      "main-group": "31",
      "classification-value": "I"
    }
]
Run Code Online (Sandbox Code Playgroud)

我想知道这里的正确方法是什么.我或许可以使用cpc.class并将其与multiValued ="true"结合使用.

我想查找与某个CPC代码匹配的文档.CPC代码可以是部分代码.现在我的解决方案只是使用multiValued = true的嵌套引用.有没有更好的方法呢?

<field name="cpc.class"                 type="int"    indexed="true" stored="true" multiValued="true" />
<field name="cpc.section"               type="string" indexed="true" stored="true" multiValued="true" />
<field name="cpc.sequence"              type="int"    indexed="true" stored="true" multiValued="true" />
<field name="cpc.subclass"              type="string" indexed="true" stored="true" multiValued="true" />
<field name="cpc.subgroup"              type="int"    indexed="true" stored="true" multiValued="true" />
<field name="cpc.main-group"            type="int"    indexed="true" stored="true" multiValued="true" />
<field name="cpc.classification-value"  type="string" indexed="true" stored="true" multiValued="true" />
Run Code Online (Sandbox Code Playgroud)

此实现的问题在于它返回的文档实际上与搜索条件不匹配.例:

"cpc.section:A",
"cpc.class:61",
"cpc.subclass:Q",
"cpc.main-group:8"
Run Code Online (Sandbox Code Playgroud)

我得到没有这种组合的文件.我认为当前的方式实现了搜索,因此每个字段都是一个列表,并返回任意组合的匹配值.我需要缩小范围,以便只返回正确的组合.

Ist*_*van 0

使用 Solr 对此进行索引的最佳方法是将嵌套数据结构 (cpcs) 拆分为平面文档,并将 Patent_id 包含在其中。这样就可以搜索部分 cpc 的任意组合。