Rails + Tire+ElasticSearchについて非常に具体的な質問がいくつかあります。
私はそれについてRailscastを見てきました、そして私はたくさんのドキュメンテーションを読みました、しかし正直に言うとそれは私の頭の上にあります。なかなか把握できない細かい点を理解してくれる人が欲しいです。
これが私のモデルのResource.rbelasticsearch部分です。
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :url
indexes :title, :boost => 3
indexes :description, :boost => 2
indexes :category, :boost => 1.5, type: 'object',
properties: {
name: { type: 'multi_field',
fields: { name: { type: 'string', analyzer: 'keyword' } } } }
indexes :user, type: 'object',
properties: {
username: { type: 'multi_field',
fields: { username: { type: 'string', analyzer: 'keyword' } } } }
end
def self.elasticsearch(params)
tire.search(load: true, page: params[:page], per_page: 20) do
query { string params[:e], default_operator: "OR" } if params[:e].present?
end
end
def to_indexed_json
to_json( include: { user: { only: [:username] },
category: { only: [:name] }
} )
end
- 'not_analyzed'はどういう意味ですか?私が読んでいるチュートリアルの多くでは、これを使用しています。分析されていないのに、なぜ含まれているの
mapping do
ですか? - インデックスを使用する目的は何ですか。たとえば、のようなもの
indexes :id, type: 'integer'
です。整数にインデックスを付ける必要があるのはなぜですか?それはパフォーマンスなどに役立ちますか? - URLのアナライザーを変更して、より適切に機能させるにはどうすればよいですか?たとえば、として保存されている場合
http://www.dropbox.com
、検索dropbox.com
しても結果は見つかりませんが、検索されwww.dropbox.com
ます。さまざまなアナライザーをすべて貼り付けてみましたが、URLに対して実際に機能するアナライザーはありません。 - 「本」、「映画」、「テープ」など、複数形で保存されている場合
category.name
、アナライザーに単数形と複数形に基づいてこの単語を表示するように指示するにはどうすればよいですか。「映画」の検索は機能しませんが、「映画」は機能します - を削除する
load: true
と、サイト全体が壊れます。彼はこれをレールキャストで調べましたが、ほんの一瞬でした。つまり、すべての属性(および関連付け)をマッピングに移動し、それを:not_analyzedに変更する必要がありますか?(私はちょうど気づきました...多分私はちょうど自分の質問#1に答えました!) - 一般に、ORに最適なデータの種類と、ANDに最適なデータはどれですか。より多くの結果を得る限り、私は考えているか、より寛大に思えます