2004年9月1日 星期三

文章的相關性



自己的研究方向就是在一堆文章中玩遊戲,很有趣的地方是,什麼樣的文章才是相關?出現相同的字,出現相同的意念,還是說它有相似的結構呢?其實在IR的領域中,我們著重的幾乎都是文章的字,統計上玩的是字數關係,search上玩的是出現的關係,我不能說兩者有什麼不一樣,因為他們玩來玩去其實一邊少不了字的關係,另一邊也少不了字的數量,只是著重的程度不同罷了。

這一個plugin利用的方式僅僅是term match,很簡單,但是老實說也很有效,尤其是在這種小領域且專一的文章群中,由我自訂的關鍵字當然在我的想法中會比較一致,相關的文章或許會比較有關聯,也許,你認為我標記的不好也說不定,因為關係是一種主觀,關連則是一種實質上的聯繫,利用資料庫的方式最多做到的是資料的聯繫,而經由我定義的關鍵字也許定義了文章的關係,但是誰知道他們的關係是不是你要的呢?

一開始安裝這個plugin,最好確認一下你可不可以去操作你的資料表,最好是有phpmyadmin之類的,當然你如果熟悉資料庫語法,那當然就以你熟悉的方式操作了。你可以到mike的網站找到這個pluin,目前版本應該是1.31,在壓縮檔中有完整的說明,你也可以看看我的說明步驟。


  • 第一步你必須在你的wp-posts這個資料表中修改兩個欄位,替他們加上FULLINDEX,你可以利用下面的sql敘述作到這件事情
    ALTER TABLE `wp_posts` ADD FULLTEXT `post_related` (
    `post_name` ,
    `post_content`
    )


  • 將releated-posts.php這個外掛放到/wp-content/plugins/目錄中

  • 接下來到後台去啟用這個外掛。

  • 最後在你的index.php中加入下面的敘述,位置看你要如何放囉
    <?php if ($single) { ?>
    <ul>
    < ?php related_posts(5, 10, '<li>', ': : ', '', ' ...</li>, false, true); ?>
    </ul>
    <?php } ?>




其中參數部分,在說明中都有,你可以自行去參考,但我這邊要說明一件事情,如果你不希望在相關文章列表出現文摘,那你最後一個參數應該設定為false,但是這時候會出現問題,你必須修改releate-post.php 大約第43行的地方:

  • if ($show_excerpt) {
    $words=split(" ",$post_content);
    $post_strip = join(" ", array_slice($words,0,$len));
    $output .= $before_post . $post_strip . $after_post;
    }
    }

    改成
    if ($show_excerpt) {
    $words=split(" ",$post_content);
    $post_strip = join(" ", array_slice($words,0,$len));
    $output .= $before_post . $post_strip . $after_post;
    }else{
    $output .= $after_post;
    }




我在第一個步驟就漏掉了,真是太誇張了,所以在這邊將步驟再提一下,希望大家用起來比較順手,祝你使用愉快!

1 則留言:

Niise 提到...

基本上我目前的plugin運作還不是非常正常,因為它不會按照find_keywords那個函式去抓到我文章中放置的&lt;!--kw=key1--&gt;,這一點我還要在看看原因在哪裡。反正我的文章代稱這一欄位基本上也沒有用,我把它拿來當作keyword放置的地方了。
而且目前無法以中文作為keyword,這樣的話效率上就有差了