2016-03-14 3 views
0

У меня есть массив идентификаторов, которые я делаю для цикла foreach и ищу каждый идентификатор в индексе SOLR, используя клиент Php Apache SOLR. Его медленно, как мертвая черепаха. Любая оцененная помощь в оптимизации этогоForeach Loop slow with API search

foreach ($f_games as $game_id){ 
     $game_type = BKT_PLUGIN_CLASS::tv_regions($game_id); 
     //Do my stuff 
     $count++; 
    } 

Где

BKT_PLUGIN_CLASS :: tv_regions

мой метод класса для поиска Solr API (который работает отлично, никаких проблем там).

Так что он делает то, что я хочу, чтобы он делал. Он принимает каждый идентификатор и переходит в SOLR и возвращает результат этого элемента, и я делаю то, что хочу, и увеличиваю счет. Имея всего 200+ идентификаторов, для вывода результатов требуется более 2 минут.

ответ

2

Использование Result Grouping в Solr - таким образом, вы можете получить х количество хитов для каждого региона все сворачивались в один ответ. Измените количество групп и количество обращений для каждой группы в соответствии с вашими потребностями.

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

0

Почему вы пинговали API для каждой игры? Вы теряете много времени, чтобы просто подключиться ... Не можете ли вы просто передать все ID и просто посчитать результат? я не знаю SOLR хорошо, но для меня это безумие, что это невозможно (поэтому я предполагаю, что это выполнимо) How to do an IN query in Solr? How can I search on a list of values using Solr/Lucene?

+0

Я не могу. Это позволяет мне искать и получать 10 результатов за один раз, даже если я отправляю все 200 + ID за раз, я получаю 10 назад. –

+1

@WaliHassan добавить '& rows = XXX' в ваш запрос, где XXX - максимальное количество желаемых результатов. –