Я пытаюсь настроить многогранный поиск для моего сайта, но у меня возникают проблемы.
Поля фасетов настроены как динамические многозначные поля. Хотя большинство продуктов имеют только одно значение для каждого граненого поля (обозначается как fq_ *, где * - это атрибут сохраняемого атрибута продукта), у некоторых есть несколько значений.
Фасетный поиск работал отлично - хорошо и быстро, пока я не попытался получить доступ к категории наших продуктов, где один или несколько продуктов имели несколько значений в одном граненом атрибуте. Для этой категории (и других подобных) я получаю сообщение об ошибке от клиента php solr: «500» Статус: Внутренняя ошибка сервера.
После поиска некоторое время я обнаружил, что установка параметра facet.method, равная "enum", позволила устранить ошибку - однако это значительно увеличило время, необходимое для загрузки страницы.
Есть ли способ сделать такой многогранный поиск более эффективным? (Я могу справиться с этим, потратив немного больше времени, чем метод "fc", но ненамного).
Спасибо.
Редактировать (вот параметры):
$solr->search('categoryid:4810', 0, 15, array(8) {
["sort"]=>
string(17) "price_Default asc"
["facet"]=>
string(4) "true"
["facet.field"]=>
array(12) {
[0]=>
string(7) "mfgname"
[1]=>
string(14) "fq_33111116587"
[2]=>
string(14) "fq_33111116586"
[3]=>
string(14) "fq_33111114704"
[4]=>
string(11) "fq_33113118"
[5]=>
string(9) "fq_331472"
[6]=>
string(10) "fq_3312052"
[7]=>
string(9) "fq_331611"
[8]=>
string(10) "fq_3312304"
[9]=>
string(14) "fq_33111116919"
[10]=>
string(9) "fq_331100"
[11]=>
string(9) "fq_331710"
}
["facet.sort"]=>
string(5) "false"
["facet.mincount"]=>
int(1)
["facet.missing"]=>
string(5) "false"
["facet.limit"]=>
int(-1)
["facet.method"]=>
string(4) "enum"
}
);