Я ищу некоторую помощь и мудрость в том, как правильно разработать схему индексации документов для моей ситуации.В основном у меня есть продукты, которые могут принадлежать нескольким категориям.В пределах этих категорий эти продукты могут или не могут быть упорядочены.В идеале я хотел бы сохранить только один уникальный документ для каждого продукта.
Я использую Solr 3.4.0, и в настоящее время у меня есть документы с такой структурой:
{
productId : "1",
sku : "ABC123",
productName : "My Product",
categorySequence : ["123-1", "456-7", "789-noseq", "000-noseq"],
description : "Product description",
rating: "4.36"
}
У меня проблемы.Это поле с несколькими значениями, которое содержит строки, отформатированные с помощью идентификатора категории и последовательности моего продукта в этом идентификаторе категории, разделенных тире.В тех случаях, когда продукт не упорядочен в категории, к которой я произвольно добавил "noseq".
Поскольку мой продукт может существовать в нескольких категориях, я выполняю запрос фильтра в поле categorySequence, например:
fq=categorySequence:123-*
, который работает для меня, чтобы вернуть только продукты, которые находятся в категории с идентификатором "123".
Однако моя проблема сейчас, как я обнаружил, заключается в том, что вы не можете сортировать помногозначные поля.Сначала я надеялся, что это будет быстрый способ сортировки отфильтрованных продуктов в соответствующей последовательности.
Я видел здесь несколько других предложений относительно группировки и наличия нескольких документов для одного и того же продукта.Однако мои продукты могут существовать во многих категориях, и, как вы можете себе представить, создаст много документов.
Я надеюсь придерживаться одного документа, представляющего один продукт.Может ли кто-нибудь помочь направить меня в правильном направлении?Я предполагаю, что в основном смотрю на создание фильтра и сортировку в двумерном поле?