2014-01-15 2 views
0

Я использую SolR 3.5.Запрос SolR с combinaison/Поля

Мои Данные, как это:

<doc> 
    <arr name="myField"> 
    <str>10_SizeA</str> 
    <str>15_SizeB</str> 
    <str>30_SizeA</str> 
    </arr> 
</doc> 

(структура данных может быть изменена, если это необходимо, но нужно оставаться сгруппированных в 1 документе узла).

Это означает, что у меня есть 1 продукт с ценой = 10 и Size = sizeA, Иной с ценой = 15, ...

Я хочу, чтобы иметь возможность вернуть свой документ, если я запрашиваю по цене> = 15 И a Size = sizeA. Но если вы ищете цену> = 30 И a Size = sizeB, я не хочу ее находить.

Есть ли способ сделать это?

EDIT: Для лучшего понимания позвольте мне объяснить соотношение между всеми этими значениями. Это мой продукт. Каждый в многозначном поле «myField» - это информация о предмете. Price_Size Итак, каждая строка «связана» и должна оставаться связанной.

Но если есть способ сохранить это отношение с другой структурой, пожалуйста, предложите.

Благодаря Reading, Dekx

ответ

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> 
0

По моему разумению, у вас есть продукт (скажем, ABC). Соотношение между ценой и размером, как

10> SizeA

15> SizeB

30> SizeA

Вместо того чтобы каждый документ для продукта, почему дон» Вы сохраняете несколько документов Solr? Давайте иметь идентификатор продукта или что-то в этом роде. Вместо того, чтобы иметь один документ в Solr, у вас есть 3 документа.

ProductID: 1 PRODUCTNAME: ABC Размер: цена SizeA: 10

ProductID: 2 PRODUCTNAME: ABC Размер: цена Sizeb: 15

ProductID: 3 PRODUCTNAME: ABC размер: SizeA цена: 30

Теперь ваш запрос «цена> = 15 и размер = sizeA» возвращает согласованный документ.

+0

Это моя проблема. Я не могу иметь несколько документов. :( – Dekx