Как мне сделать эффективный граненый поиск, используя многозначные поля с клиентом solr php? - PullRequest
1 голос
/ 24 ноября 2010

Я пытаюсь настроить многогранный поиск для моего сайта, но у меня возникают проблемы.

Поля фасетов настроены как динамические многозначные поля. Хотя большинство продуктов имеют только одно значение для каждого граненого поля (обозначается как 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"
}
);

1 Ответ

0 голосов
/ 29 марта 2011

Вероятно, у вас проблемы с памятью не у Solr, а у Tomcat ... Огранка Solr занимает много памяти, а обычная настройка Tomcat идет с очень низкой настройкой памяти, увеличивайте память вашего JAVA_OPTS:

(linux) export JAVA_OPTS = "- Xmx3500m -Xms3500m"

или другое значение, соответствующее количеству информации, которую вы обрабатываете и которую имеет ваш сервер.

Вот несколько хороших ресурсов по этому вопросу: http://wiki.apache.org/tomcat/FAQ/Memory http://helpdeskgeek.com/how-to/increase-tomcat-memory-allocation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...