У меня более 600 000 постов, которые нужно проиндексировать с помощью Algolia (на основе Wordpress), поэтому я написал команду "reindex_post", чтобы включить все мои посты, индексированные по партиям, чтобы избежать использования памяти.Тем не менее, когда я использую эту команду в WP-CLI, некоторые сообщения, похоже, не проиндексированы правильно, и я обнаружил две ошибки:
Некоторые сообщения не могут быть найдены из моего внешнего интерфейса, хотяЯ вижу его на заднем конце Algolia.
Когда я вводю более 3 символов в моем интерфейсе, автозаполнение не работает, хотя оно работает, когда я ввожу менее 3 символов.
Я установил плагин для WordPress Algolia и попытался с его помощью проиндексировать мои сообщения и обнаружил, что он работает хорошо.Ни одна из двух проблем ниже не произошла.Единственная проблема в том, что я не могу индексировать 600 000 сообщений таким способом.
публичная функция reindex_post ($ args, $ assoc_args) {
$start = 0;
$end = 0;
if (count($args) === 1) {
$arr = explode(',', $args[0]);
$start = intval($arr[0]);
$end = intval($arr[1]);
echo "鍚姩鍒嗛〉锛?{start}->${end}\n";
}
global $algolia;
$index = $algolia->initIndex('wp_searchable_posts');
$paged = $start;
$count = 0;
do {
$posts = new WP_Query([
'posts_per_page' => 50,
'paged' => $paged,
'post_type' => 'post'
]);
if (!$posts->have_posts()) {
break;
}
$records = [];
foreach ($posts->posts as $post) {
if ($assoc_args['verbose']) {
WP_CLI::line('Serializing [' . $post->post_title . ']');
}
$record = (array)apply_filters('post_to_record', $post);
if (!isset($record['objectID'])) {
$record['objectID'] = implode('#', [$post->post_type, $post->ID]);
}
$records[] = $record;
$count++;
}
if ($assoc_args['verbose']) {
WP_CLI::line('Sending batch');
}
$index->saveObjects($records);
$paged++;
if ($paged > $end) {
break;
}
} while (true);
WP_CLI::success("$count posts indexed in Algolia");
}
}
I 'Я новый программист и не очень знаком с php.Буду очень признателен, если кто-нибудь подскажет, как его точно изменить