Exemplo n.º 1
0
 public function unindex_post($postid)
 {
     require_once QA_INCLUDE_DIR . 'db/post-update.php';
     $titlewordids = qa_db_titlewords_get_post_wordids($postid);
     qa_db_titlewords_delete_post($postid);
     qa_db_word_titlecount_update($titlewordids);
     $contentwordids = qa_db_contentwords_get_post_wordids($postid);
     qa_db_contentwords_delete_post($postid);
     qa_db_word_contentcount_update($contentwordids);
     $tagwordids = qa_db_tagwords_get_post_wordids($postid);
     qa_db_tagwords_delete_post($postid);
     qa_db_word_tagwordcount_update($tagwordids);
     $wholetagids = qa_db_posttags_get_post_wordids($postid);
     qa_db_posttags_delete_post($postid);
     qa_db_word_tagcount_update($wholetagids);
 }
function qa_post_unindex($postid)
{
    global $qa_post_indexing_suspended;
    if ($qa_post_indexing_suspended > 0) {
        return;
    }
    $titlewordids = qa_db_titlewords_get_post_wordids($postid);
    qa_db_titlewords_delete_post($postid);
    qa_db_word_titlecount_update($titlewordids);
    $contentwordids = qa_db_contentwords_get_post_wordids($postid);
    qa_db_contentwords_delete_post($postid);
    qa_db_word_contentcount_update($contentwordids);
    $tagwordids = qa_db_tagwords_get_post_wordids($postid);
    qa_db_tagwords_delete_post($postid);
    qa_db_word_tagwordcount_update($tagwordids);
    $wholetagids = qa_db_posttags_get_post_wordids($postid);
    qa_db_posttags_delete_post($postid);
    qa_db_word_tagcount_update($wholetagids);
}
function qa_post_index($postid, $type, $questionid, $title, $text, $tagstring, $skipcounts = false)
{
    global $qa_post_indexing_suspended;
    if ($qa_post_indexing_suspended > 0) {
        return;
    }
    //	Get words from each textual element
    $titlewords = array_unique(qa_string_to_words($title));
    $contentcount = array_count_values(qa_string_to_words($text));
    $tagwords = array_unique(qa_string_to_words($tagstring));
    $wholetags = array_unique(qa_tagstring_to_tags($tagstring));
    //	Map all words to their word IDs
    $words = array_unique(array_merge($titlewords, array_keys($contentcount), $tagwords, $wholetags));
    $wordtoid = qa_db_word_mapto_ids_add($words);
    //	Add to title words index
    $titlewordids = qa_array_filter_by_keys($wordtoid, $titlewords);
    qa_db_titlewords_add_post_wordids($postid, $titlewordids);
    //	Add to content words index (including word counts)
    $contentwordidcounts = array();
    foreach ($contentcount as $word => $count) {
        if (isset($wordtoid[$word])) {
            $contentwordidcounts[$wordtoid[$word]] = $count;
        }
    }
    qa_db_contentwords_add_post_wordidcounts($postid, $type, $questionid, $contentwordidcounts);
    //	Add to tag words index
    $tagwordids = qa_array_filter_by_keys($wordtoid, $tagwords);
    qa_db_tagwords_add_post_wordids($postid, $tagwordids);
    //	Add to whole tags index
    $wholetagids = qa_array_filter_by_keys($wordtoid, $wholetags);
    qa_db_posttags_add_post_wordids($postid, $wholetagids);
    //	Update counts cached in database
    if (!$skipcounts) {
        qa_db_word_titlecount_update($titlewordids);
        qa_db_word_contentcount_update(array_keys($contentwordidcounts));
        qa_db_word_tagwordcount_update($tagwordids);
        qa_db_word_tagcount_update($wholetagids);
        qa_db_tagcount_update();
    }
}