関数add_document()

/**
 * 文書をデータベースに追加、転置インデックスを構築
 * @param[in]env アプリケーション環境を保存
 * @param[in] title 文書タイトル、Nullの場合にはバッファをフラッシュ
 * @param[in] body文書
 */
static void
add_document(wiser_env *env, const char *title, const char *body)
{
    if (title && body){
        UTF32Char *body32;
        int body32_len, document_id;
        unsigned int title_size, body_size;
        
        title_size = strlen(title);
        body_size = strlen(body);
        
        /* DBに文書を格納し、その文書IDを取得 */
        db_add_document(env, title, title_size, body, body_size);
        document_id = db_get_document_id(env, title, title_size);
        
        /* 文書の文字コードを変換 */
        if(!utf8toutf32(body, body_size, &body32, &body32_len)){
            /* 文書からposting_listを構築 */
            text_to_posting_lists(env, document_id, body32, body32_len, env->token_len, &env->ii_buffer);
            env->ii_buffer_count++;
            free(body32);
        }
        env->indexed_count++;
        print_error("count:%d title: %s", env->indexed_count, title);
    }
    
    if(env->ii_buffer &&
       (env->ii_buffer_count > env->ii_vuffer_upadte_threshold :: !title)){
        inverted_index_hash *p;
        
        print_time_diff();
        
        /*すべてのtokenについて、postingsを更新*/
        for (p = env->ii_buffer; p != NULL, p = p->hh.next){
            update_postings(env, p);
        }
        free_inverted_index(env->ii_buffer);
        print_error("index flushed.");
        env->ii_buffer = NULL;
        env->ii_buffer_count = 0;
        
        print_time_diff();
    }
}