2012-02-21 9 views
2

ブログの投稿に「関連アイテム」機能を実装するにはどうすればよいですか?私はポストタイトルの分析に基づいて同様の投稿のリストを返したいと思います。「関連アイテム」Ruby

これを行うための自分のアイデアは非常に非効率的なように思えますし、すでにこの機能をサポートしているツールがあるのだろうかと思います。私はGoogle、ルビーのツールボックスを介して助けを見つけることがなかった、私は黒点のAPIを見た。ブログアプリケーション/コンテンツサイトでこれをどのように達成しますか?この機能に興味のある人のための

更新

、私は私が私のshowアクションでこれを使用することができます黒点で行くことにしました:

@find_related = Post.search do 
    fulltext params[:title] 
end 

これは、関連する投稿の配列を返します。

@related = @find_related.results 

すべてのフィードバックとありがとうございましたrailscast大きなヘルプ

答えて

2

確かに、そのための優れた効率的なツールがいくつかあります。技術的には、ポストタイトル/その他のデータの索引付きデータベースでの全文検索が必要です。すべての検索と索引付けを処理する外部データベースを実行するツールがあります。これらのバックエンドは普遍的なものであり、ルビではありません。アプリケーション内でクライアントロジックのみを使用します。それはおそらく既存のアルゴリズム以外のアルゴリズムを実装することができないので、非常に効率的です。私は、次のをお勧めします:

上記でこれらのライブラリは、データ交換のためのクライアントのロジックを提供します検索エンジン(すべてApacheベースのものです)

+0

おかげで、私はについて移動する方法の良いアイデアを持っていると思いますこの。 – Dru

1

あなたの要件がこれを許可するかどうかはわかりませんが、ブログ投稿には一般的にタグが付いています。

他の関連する投稿をフィルタリングする方法として、ブログの投稿にタグを使用することができます。なぜなら、類似したタグを持つ投稿は何らかの形で関連する必要があるからです。一致したタグの数と発行された最新の日付で並べ替えることができます。

1

これを行うにはいくつかの方法がありますが、どちらもw異なる賛否両論

簡単な方法は、あなたの記事にキーワードをタグ付けし、それを使ってタグが一致する他の記事をプルし、それらの結果を同じタグの数でソートすることです。あなたがコンテンツに置いたタグがそれをよく表している限り、これは多くの偽陽性のない良い結果をもたらします。そして、私が知っている限り、これはいくつのブログプラットフォームがこの機能を実装しているかです。

もっと複雑な方法は、NLPを使用して各投稿のタイトルを解析し、別の投稿への適合度を計算することです。これにはより多くのコードを書くことが含まれ、偽陽性が生じる可能性があります。しかし、手書きで投稿にタグを付ける必要はなく、特定の単語やフレーズを重み付けする場合は、投稿の検索方法を微調整することができます。 Treat, the Text Retrieval, Extraction and Annotation Toolkitを見てください。これはRuby NLPの出発点として適しています。あなたはタイトルに言葉で予定している場合

1

、この粗製の単純な解決策は、あなたの準備ができて何かの生産のための足がかり与えるかもしれない:

#assume titles is an array of arrays of the words of titles and title is the one we are trying to mach with 
HOW_MANY_RELATED_WORDS=3 
titleWords=title.split(' ').sort 
related=[] 
trues=0 
titles.each do |t| 
    t.each do |word| 
    true+=1 if titleWords.include?(word) 
    end 
    related<<t.join(' ') if(trues>=HOW_MANY_RELATED_WORDS) 
end 
関連する問題