参考サイトを元にElasticsearchを用いて、レコメンド機能を実装しようと考えており、下記2点を対応したいのですが、
やり方が不明なため、どなたかご教授いただければと存じます。
■やりたい事■
1:more_like_thisで相関関係のあるれコードがデフォルトで最大10件表示されるが、最大5件表示されるようにしたい
2:相関関係が高いレコードで順番を変更したい。その為相関関係のscoreを取得したい。
○参考サイト○
http://post.simplie.jp/posts/121
http://techlife.cookpad.com/entry/2014/09/24/092223
環境
rails4
Elasticsearch 5
コード
Article.rb
class Article < ActiveRecord::Base include Elasticsearch::Model include Elasticsearch::Model::Callbacks settings do mappings dynamic: 'false' do indexes :title, type: 'string', analyzer: 'kuromoji' indexes :content, type: 'string', analyzer: 'kuromoji' end end def more_like_this self.class.__elasticsearch__.search({ query: { more_like_this: { fields: %w(content), ids: [id], min_doc_freq: 0, min_term_freq: 0 } } }) end end
Controller
class ArticlesController < ApplicationController def show @article = Article.find(params[:id]) recommend_ids = @article.more_like_this.results.map {|r| r.id} @article_recommend = Article.where(id: recommend_ids) end end
recommend_ids取得結果
(byebug) recommend_ids ["72", "1", "64", "3", "73", "65", "40", "5"]
あなたの回答
tips
プレビュー