вложенные поля в SOLR

#solr #faceted-search

#solr #фасетный поиск

Вопрос:

У меня вопрос о возможности создания вложенных полей в solr. Поисковые запросы Google рассказали мне кое-что о группе, но я думаю, что это только для результата?

я хочу иметь такую структуру:

  • Категория1
    • пункт 1 (9)
    • пункт 2 (8)
  • Категория2
    • пункт 3 (6)
  • Категория 3
    • пункт 4 (23)

Я пробовал что-то вроде этого:

 <field name="Category" type="string" indexed="true" stored="true" multiValued="true" required="false">
<field name="MiscellaneousName" type="string" indexed="true" stored="true" multiValued="true" required="false"/>
  

Но это не работает.

Обновление: категории и элементы должны быть фасетными. Каждый элемент (=фасет) является частью категории. Одна категория может содержать несколько или нулевые поля. Категории и элементы хранятся в базе данных, и я хочу индексировать их динамически. Я хочу искать только элементы, категории — это просто текст. Я использую solr 3.3 с Tomcat 7.

Комментарии:

1. Какой Solr вы используете? Если 4.0, похоже, что вы ищете сводные фасеты . Если да, то вот хорошая вводная статья .

Ответ №1:

Спасибо за обновление. Сводные фасеты позволяют делать что-то вроде:

  • Категория1 (17)
    • пункт 1 (9)
    • пункт 2 (8)
  • Категория2 (6)
    • пункт 3 (6)
  • Категория3 (23)
    • пункт 4 (23)

.. но они доступны только в Solr 4.0 (магистральный). Однако вы можете смоделировать эти результаты в более низких Solr (вплоть до 1.4), хотя это немного сложно и требует двух запросов Solr вместо одного. Я написал сообщение в блоге об этом — Сводная фасетизация (деревья решений) в Solr 1.4.

Вы можете сохранить схему, которая у вас есть в вашем исходном вопросе — сводная фасетизация (реальная или имитированная) работает с любыми произвольными, разными (или одинаковыми) полями.

Комментарии:

1. Спасибо за ваш ответ! Похоже, это то, что мне нужно! Как вы думаете, solr 4.0 готов к использованию? И где взять?

2. «Solr 4.0» на самом деле означает текущую магистраль Solr, которую вам придется изучить самостоятельно, чтобы убедиться, что она стабильна в той области, которую вы будете использовать — в выпуске много нового в разных состояниях «готово». На работе мы запускаем версию 1.4.1, и она надежна как скала, но мы еще не сделали скачка. Если вы не знаете наверняка, лучше всего использовать stable (Solr 3.4) и использовать метод двух запросов, который я описал в своем сообщении в блоге — это далеко не так просто, как реальные сводные фасеты в 4.0, но и то, и другое даст вам дерево фасетов, которые вы ищете…

Ответ №2:

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

Если у вас возникли проблемы с обновлением, вы можете проверить эту опцию @ http://www.lucidimagination.com/why-lucid/webinars/mastering-power-faceted-search

Это обходной путь, и вам нужно манипулировать данными, которые вы вводите.

 Cattegory1 -> item 1  
0//Cattegory1 and 1//Cattegory1//item1
  

Он работает с комбинацией —
фильтровать результаты, используя fq=category:»0 //Cattegory1″
facet.prefix, который поможет вам ограничить фасеты в зависимости от уровня, если вам нужно ограничить результаты

Также http://wiki.apache.org/solr/HierarchicalFaceting , может быть полезно.

Комментарии:

1. спасибо за ваш ответ, я обновил свой вопрос. Но как сделать Cattegory частью элемента? Если бы это было возможно, я мог бы сгруппировать их на клиентском сайте…

Ответ №3:

Не могли бы вы сделать категорию просто полем элемента, чтобы, например, при поиске в категории 1 элементы 1 и 2 возвращались в результатах?

Если у вас есть два поля, которые обязательно должны быть частью сущности и должны быть связаны друг с другом, могут помочь поля poly. Они были разработаны для таких вещей, как точка, которая имеет значение x и y.

Я думаю, нам нужно больше знать о том, что именно вы пытаетесь сделать, чтобы предложить хорошие способы обработки этого в Solr.

Комментарии:

1. спасибо за ваш ответ, я обновил свой вопрос. Я не буду искать категории, только для элементов. Но как сделать cattegory частью элемента?

2. Сделайте объекты, которые вы добавляете, элементами, и пусть одно поле в элементе будет «категория». Заполните это категорией. Извините, пытался добавить пример, но у меня возникли проблемы с форматированием. РЕДАКТИРОВАТЬ: после вашего обновления, я думаю, это не то, что вам нужно. Удачи в поиске вашего реального ответа!