Почему мой код не индексирует все сообщения правильно? - PullRequest
0 голосов
/ 23 марта 2019

У меня более 600 000 постов, которые нужно проиндексировать с помощью Algolia (на основе Wordpress), поэтому я написал команду "reindex_post", чтобы включить все мои посты, индексированные по партиям, чтобы избежать использования памяти.Тем не менее, когда я использую эту команду в WP-CLI, некоторые сообщения, похоже, не проиндексированы правильно, и я обнаружил две ошибки:

  1. Некоторые сообщения не могут быть найдены из моего внешнего интерфейса, хотяЯ вижу его на заднем конце Algolia.

  2. Когда я вводю более 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.Буду очень признателен, если кто-нибудь подскажет, как его точно изменить

...