【问题标题】:Storing and searching dynamic key value pairs in Solr document在 Solr 文档中存储和搜索动态键值对
【发布时间】:2011-12-29 06:51:44
【问题描述】:

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

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

    </doc>  

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

【问题讨论】:

    标签: java solr indexing full-text-search


    【解决方案1】:

    更新了一下,因为 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>
    

    当然,如果您真的无法更改数据本身,那么原始答案仍然有效。

    【讨论】:

      【解决方案2】:

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

      你可以试试——

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

      语言字段将保存语言的值,也可以用作可搜索字段。

      <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,您可以按位置映射客户端上的语言计数。

      【讨论】:

      • 谢谢。我正在尝试第一种方法。我正在使用多值字段来存储将显示在搜索结果中的“语言”。对于每个相应的“语言”,我将创建一个动态键并将“语言计数”存储在那里。您的回复很有帮助。
      • 我刚刚发现如果“语言”名称包含一个特殊字符(solr 不允许),那么使用第一种方法可能会遇到问题
      • 是的。字段名称没有经过任何更改。所以你需要在数据馈送方面处理它。
      • 不需要动态字段。如果您担心两个数组结果之间的映射,则将所有内容存储在一个多值字段中为php|10web|2,并解析出结果数组元素的两个组件。
      猜你喜欢
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多