具有组合/字段关系的SolR查询

时间:2014-01-15 15:21:13

标签: solr wcs

我正在使用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

2 个答案:

答案 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>