我有超过600,000个帖子要由Algolia(基于Wordpress)进行索引,因此我编写了一个“ reindex_post”命令,以使我的所有帖子都可以成批索引,以避免内存用完。但是,当我在WP-CLI中使用此命令时,某些帖子似乎未正确索引,我发现了两个错误:
有些帖子虽然可以在Algolia的后端看到,但无法从我的前端搜索。
当我在前端输入多于3个字符时,自动补全不起作用,尽管当我输入少于3个字符时它会起作用。
我安装了Algolia wordpress插件,并尝试使用它索引我的帖子,发现它运行良好。以下两个问题均未发生。唯一的问题是我无法通过这种方式索引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");
}
}
我是一名新程序员,对php不太熟悉。如果有人可以告诉我如何进行精确修改,我将不胜感激