#solr #faceted-search
#solr #фасетный поиск
Вопрос:
Я использую SOLR 4 и имею схему документа, содержащую многозначное поле. Схема выглядит примерно так:
... some fields
"foo": [
"aaa",
"abb",
"baa",
"bbb"
],
... more fields
Я хотел бы получить количество всех документов с каждым значением переменной «foo»:
- aaa был в списке foo из 45 документов
- abb был в списке foo из 76 документов
- baa был в списке foo из 44 документов
- bbb был в списке foo из 52 документов
Чтобы немного усложнить задачу, я хотел бы отфильтровать, какие фасеты возвращаются (в приведенном выше примере, скажем, только те, которые начинаются с «a»):
- aaa был в списке foo из 23 документов
- abb был в списке foo из 76 документов
Я думаю, что мне нужно как-то отфильтровать фасеты, но я не знаю, с чего начать. Предложения приветствуются!
Ответ №1:
Параметр facet.prefix ограничивает условия, по которым выполняется фасетирование, теми, которые начинаются с заданного строкового префикса.
q=*
amp;facet=true
amp;facet.field=foo
amp;facet.prefix=a
Приведенный выше запрос отфильтрует фасеты и вернет вам только те, которые начинаются с a .
Ответ №2:
Я думаю, что свертывание полей может быть полезным:
https://cwiki.apache.org/confluence/display/solr/Result Grouping
Комментарии:
1. Не могли бы вы, пожалуйста, немного уточнить? В ссылке в вашем ответе указано «Поле, на которое сворачивается. Поле должно быть однозначной строкой, Int или Float «. Есть ли другой способ сделать это для многозначных полей?