我需要存储和索引附加到特定Solr文档的键值对。例如,可能有数量可变的标签(标签)附加到solr文档,每个标签名称都有一个整数作为它的值。
<doc>
<id>1001</id>
#dymanic tags attached
php=>10
web=>2
programming=>12
mysql=>10
</doc> 因此,当我搜索"php“时,这个文档应该会出现在搜索结果中,并且我应该能够读取该特定文档的值(例如,它的值是10)。我如何为它创建一个模式,我如何存储它。另外,我如何使用REST api搜索它?
发布于 2011-11-15 15:48:57
对于动态字段,您需要将它们添加为用于获取计数的键,以及用于使其可搜索的值。
相反,你可以尝试-
将它们添加为语言和计数的多值字段。
language字段将保存语言的值,也可以用作可搜索字段。
<field name="language" type="text" indexed="true" stored="true" multiValued="true"/>添加language count作为其他多值字段,并保持顺序。
<field name="language_count" type="int" indexed="false" stored="true" multiValued="true"/>在响应中,您将有两个language和language_counts数组,您可以通过位置映射客户端上的语言计数。
发布于 2013-10-23 02:36:12
稍微更新一下,因为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>当然,如果你真的不能改变你的数据本身,原始的答案仍然有效。
https://stackoverflow.com/questions/8132764
复制相似问题