2014-10-13 3 views
0

Я начинаю изучать solr, и я пытаюсь моделировать данные по ценам продуктов в разных пакетах.Solr индексирование многозначных полей

например.

Product { 
allPrices: { 12, 13, 14 } 
bundles: {Bundle_1, Bundle_2, Bundle_3} 
price:  ???? 
} 

Я оставил price поля, потому что это как initialy граненого поиск работал. Было проиндексировано только одно значение цены, и оно использовалось для фильтрации.

У меня есть страница с продуктами, где у меня есть раскрывающийся список пакетов, которые я могу выбрать. В зависимости от комплекта я выбираю соответствующую цену, которая должна быть показана. Как я могу моделировать это поведение, чтобы можно было провести грань и использовать SOLR ranges.

ответ

2

Я рекомендую вам взглянуть на подход Block Join в Solr. Он будет работать очень хорошо для ваших нужд. Вы можете смоделировать продукт как родительский документ и все 3 пакета в качестве дочерних продуктов. У каждого будет своя цена, поэтому вы можете легко ее показать. Проблема здесь в том, что у Solr до сих пор нет арифметики уровня ребенка, поэтому вам нужно будет реализовать ее самостоятельно. Кроме того, Solr не может сортировать документы дети полей, так что вам нужно будет сделать агрегацию

Я рекомендую эту статью в качестве начала для вас - http://blog.griddynamics.com/2013/09/solr-block-join-support.html

Другой подход мог бы моделировать каждый узелок как единый документ. У вас может быть 3 документа.

Bundle1 { 
    price: 12, 
    name: Bundle_1 
    product: Product1 
} 
Bundle2 { 
    price: 13, 
    name: Bundle_2 
    product: Product1 
} 

Однако этот подход будет иметь некоторые проблемы, а также - ваши данные будут расти в геометрической прогрессии, так как вы будете создавать документ для каждого свертка у вас есть.

Смежные вопросы