0
私は私のレールアプリで単語を検索するにはelasticsearch-railsとelasticsearch-model gemを使用しています。適切なレスポンスが得られない伸縮性レールがありません
私は検索の大文字と小文字を区別しないようにしたいと思います。複数形から独立している必要があります。私はgoogleで多くの研究をしましたが、分析器を使ってそれをやり遂げる方法を勘案しましたが、成功はしませんでした。だから私は新しい質問を投稿しなければならなかった。ここで
が、私は場所を取るために検索したい私のモデル
require 'elasticsearch/model'
class Article < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :title, analyzer: 'english', index_options: 'offsets'
indexes :text, analyzer: 'english'
end
end
def self.search(query)
__elasticsearch__.search(
{
query: {
multi_match: {
query: query,
fields: ['title^10', 'text']
}
},
highlight: {
pre_tags: ['<em>'],
post_tags: ['</em>'],
fields: {
title: {},
text: {}
}
}
}
)
end
end
# Delete the previous articles index in Elasticsearch
Article.__elasticsearch__.client.indices.delete index: Article.index_name rescue nil
# Create the new index with the new mapping
Article.__elasticsearch__.client.indices.create \
index: Article.index_name,
body: { settings: Article.settings.to_hash, mappings: Article.mappings.to_hash }
# Index all article records from the DB to Elasticsearch
Article.import
#Article.import force: true
である私の質問は、私は言葉を検索しますかどのようにしていますか? Tシャツ、Tシャツ、Tシャツはすべて一致する必要があります。 さらなる研究のためのリンクも役立ちます。 は、テーブル内の探索方法の
申し訳ありませんが、私はあなたがme.because Iを説明してくださいすることができますそれを取得できませんでした?ルビーで新しいですか? –
テスト用のオープンレールコンソール。 User.where(「firstname ILIKE?or lastname ILIKE?」、「%#{params [q]}%」、「%#{params [q]}」) ここで、Userはモデル名 firstnameとlastnameは属性または列名です params [:q]はクエリパラメータです – puneet18
Model.where( "column_name ILIKE?"、 "%#{query_string}%") – puneet18