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