我正在使用SolR 3.5。
我的数据是这样的:
<doc>
<arr name="myField">
<str>10_SizeA</str>
<str>15_SizeB</str>
<str>30_SizeA</str>
</arr>
</doc>
(如果需要,可以修改数据结构,但需要保留在1个文档节点中)。
这意味着我有1件产品,价格= 10,尺码=尺码A,另一件价格= 15,......
如果我查询价格&gt; = 15 AND尺寸= sizeA,我希望能够退回我的文档。 但如果要查看价格&gt; = 30和尺寸=尺寸B,我不想找到它。
有没有办法做到这一点?
编辑: 为了更好地理解,让我解释所有这些值之间的关系。 这是我的产品。 多值字段“myField”中的每一个都是关于Item的信息。 Price_Size 所以每一行都是“链接”的,必须保持相关。
但如果有办法与其他结构保持这种关系,请继续提议。
谢谢阅读, Dekx
答案 0 :(得分:0)
根据我的理解,你有一个产品(比如ABC)。价格和尺寸之间的关系就像
10&gt; SIZEA
15&gt; SizeB
30&gt; SIZEA
为什么不保存多个Solr doc,而不是保留每个文档的产品? 我们有产品ID或其他东西。而不是在Solr中有一个文档,有3个文档。
productid:1 productname:ABC size:SizeA价格:10
产品:2产品名称:ABC尺寸:尺寸价格:15
产品:3产品名称:ABC尺寸:尺寸A价格:30
现在,您的查询“价格&gt; = 15并且尺寸=尺寸A ”将返回匹配的文档。
答案 1 :(得分:0)
您可以使用
创建动态字段<field name="prices" type="float" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="price_*" type="float" indexed="true" stored="true" multiValued="true"/>
<copyField source="price_*" dest="prices"/>
<doc>
<str name="price_A">10</str>
<str name="price_B">15</str>
<str name="price_C">30</str>
<arr name="prices">
<str>10</str>
<str>15</str>
<str>30</str>
</arr>
</doc>