0

基本的に Movie モデルから取得しようとしている、ElasticSearch クエリからネストされたデータを取得しようとしています。

title
ratings
categories

ここで、2 つのタイヤのセットアップを試しましたが、どちらも評価やカテゴリではなく、映画のタイトルのみを返します。たとえば、インデックスは次のように見えます:

curl -X POST "http://localhost:9200/movies/_search?pretty=true" -d '
 {
    "クエリ" : { "クエリ文字列" : {"クエリ" : "t*"} },
    "ファセット": {
      "カテゴリ": { "用語": {"フィールド": "カテゴリ"} }
    }
  }
'
{
  「取った」 : 16,
  "timed_out" : false,
  "_shards": {
    "合計" : 5,
    「成功」: 5,
    「失敗しました」: 0
  }、
  「ヒット」:{
    "合計" : 3,
    "max_score" : 1.0,
    「ヒット」:[{
      "_index" : "映画",
      "_type" : "映画",
      "_id": "13",
      "_score" : 1.0, "_source" : {"description":null,"id":13,"title":"Tiny Plastic Men"}
    }、{
      "_index" : "映画",
      "_type" : "映画",
      "_id": "32",
      "_score" : 1.0, "_source" : {"description":null,"id":32,"title":"The Extreme Truth"}
    }、{
      "_index" : "映画",
      "_type" : "映画",
      "_id": "39",
      "_score" : 1.0, "_source" : {"description":null,"id":39,"title":"A Time of Day"}
    } ]
  }、
  "ファセット": {
    「カテゴリ」:{
      "_type" : "用語",
      「行方不明」: 3,
      「合計」: 0,
      「その他」: 0,
      "条項" : [ ]
    }
  }

これは私の映画モデルです:

class Movie :分類
  所属先:ユーザー

  has_many :評価

  マッピングする
     インデックス:ID、タイプ:「整数」
     インデックス:タイトル、ブースト:40
     インデックス:説明、アナライザー:「スノーボール」
     インデックス :カテゴリが行う
       インデックス:ID、タイプ:「整数」
       インデックス:名前、タイプ: 'string'、インデックス: 'not_analyzed'
     終わり
     インデックス :レーティング
       インデックス:ID、タイプ:「整数」
       インデックス:星、タイプ:「整数」
     終わり
   終わり

終わり

検索実験のブランチはこちら: https://github.com/mulderp/moviedb/tree/categories

ジャンル --> 評価など、検索のファセットをどのように機能させることができますか。

4

1 に答える 1

2

実際にはカテゴリや評価にインデックスを付けているわけではありません。それらはマッピングにありますが、タイヤのデフォルトの実装は、activerecord によって提供されるメソッドをto_indexed_json呼び出すだけです。to_json

たとえば、カテゴリ/評価情報を含めるには、それをオーバーライドする必要があります

def to_indexed_json
  to_json(:include => [:categories, :ratings])
end
于 2013-05-05T11:15:28.997 に答える