在Solr文档中存储和搜索动态键值对

时间:2011-11-15 07:17:41

标签: java solr indexing full-text-search

我需要存储和索引附加了特定Solr文档的键值对。例如,可能有一个可变数量的标签(标签)附加到solr文档,每个标签名称都有一个整数以及它作为它的值。

   <doc>
     <id>1001</id>
     #dymanic tags attached
     php=>10
     web=>2
     programming=>12
     mysql=>10

    </doc>  

因此,当我搜索“php”时,这个文档应该显示在搜索结果中,我应该能够读取该特定文档的值(例如,它的值为10)。如何为此创建架构以及如何存储它。另外我如何使用REST api搜索它?

2 个答案:

答案 0 :(得分:1)

对于动态字段,您需要将它们添加为获取计数的键,以及使它们可搜索的值。

相反,你可以尝试 -

将它们添加为语言和计数的多值字段。

语言字段将包含语言的值,也可以作为可搜索的字段。

<field name="language" type="text" indexed="true" stored="true" multiValued="true"/>

使用维护的顺序将语言计数添加为其他多值字段。

<field name="language_count" type="int" indexed="false" stored="true" multiValued="true"/>

在响应中,您将拥有两个用于language和language_counts的数组,您可以按位置映射客户端语言的计数。

答案 1 :(得分:0)

因为solr具有新功能而更新位:

你是XML,solr擅长xml,所以使用XML,然后让solr做自己的解析。

换句话说,您可能会考虑其中之一:

<doc>
  <id php="10" web="2" programming="12" mysql="10">1001</id>
</doc>

<doc>
  <element id="1001" php="10" web="2" programming="12" mysql="10">
    #dymanic tags attached
    php=>10
    web=>2
    programming=>12
    mysql=>10
  </element>
</doc>

<doc>
  <element>
    <id>1001</id>
    <php>10</php>
    <web>2</web>
    <programming>12</programming>
    <mysql>10</mysql>
  </element>
</doc>

当然,如果您真的无法自行更改数据,原始答案仍然存在。