問題タブ [tire]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Tire Gem RubyonRailsファセット検索の問題
TireGemを使用している動作中のcurlリクエストを複製しようとしています。ただし、ライブラリを使用すると、ファセット内で複数のフィールドを設定できないようです。用語とフィルターフィールドの両方を設定したいのですが、それらは互いに上書きします。複製しようとしているcurlリクエストの作業ファセット部分は次のとおりです。"facets":{"person_value_f":{"terms":{"field": "person_value_f"、 "size":10}、 "nested" :"dossiers"、 "facet_filter":{"term":{"person_value_f": "NO"}}}}}
これを複製するための私のコードは次のとおりです。facet"person_value_f"、:nested => "dossiers" do filter(person_value_f、 "NO")terms "person_value_f" end
用語であることが、curlコマンドに含まれる唯一のセクションであるコードの最後の行です。Tireライブラリを見ると、これを実行できないようです。これは非常に奇妙に思えます。ファセットがperson_value_fであり、表示したい値が「NO」の場合、基本的にファセットナビゲーションを実行するのに疲れるにはどうすればよいですか?前もって感謝します
ruby-on-rails - タイヤの宝石: 未定義のメソッド「検出」
Rails アプリで永続化されたタイヤ モデルをいくつか使用しています。を使用して、検索は正常に機能していますTire.search ['index1','index2'], :load => true do ...
が、新しいインデックスとモデルを作成しました。それを検索に含めてその結果にアクセスしようとすると、次のエラーが発生します。
Tire::Results::Collection#results の最後の行から来ていることがわかります。
何らかの理由records[item['_type']]
で、私の他のモデルでは Tire::Results::Collection オブジェクトを返しますが、新しいクラスでは、実際のモデル クラスである AuthoredHistory オブジェクトを返します。宝石の github ページでこれについて何かを見ましたが、Tire.configuration.wrapper では何もしていません。すべてのインデックス付きモデルに Persistence、Search、および Callbacks モジュールを含めています。
何か不足していますか?誰かが私を正しい方向に向けることができますか? (カルミ、ここで私を救ってくれることを願っています!)
[アップデート]
今、私はどこかに到達しています...特定のインデックスからの結果が1つだけ返されたときにエラーが発生していました。インデックスからの結果が 2 つ以上ある場合は、それを Tire::Results::Collection にラップします。今ハックを見つけるために...
【再度UPDATE】
ハッキーな解決策が見つかりました!答えは以下をご覧ください...
ruby-on-rails - mongo rails アプリで Elasticsearch インデックスが更新されないのはなぜですか?
Rails 3.2 mongo アプリで Tire gem を使用していますが、elasticsearch が更新されないという問題があります。以下に私の質問モデルを含めました。
実行して新しい質問を作成しました Question.create(:question => "What day is it?", :answer => "Monday")
が、検索しても出てきませんQuestion.tire.search( "What day is it?" )
。古い質問が表示されていますが、新しい質問はどれもインデックスに追加されていないようです.
アップデート
次のエラー メッセージがログに表示されます。
ruby - タイヤの宝石-ドキュメントのブーストをサポートしていますか?
ElasticSearchのドキュメント(http://www.elasticsearch.org/guide/reference/mapping/boost-field.html)を読むと、値に基づいてドキュメントをブーストできると書かれていますが、この動作はTireを介して実装されていますか?もしそうなら、構文に苦労しています。
アップデート:
のように見えます。
_boost列にブーストされた値があると仮定すると、必要なものは何ですか?
ruby-on-rails - 単一の日付に一致する ElasticSearch フィルター
私はしばらくエラスティック検索を使用してきましたが、特定の開始日 (start_at) に一致するイベントを検索する必要があるという障害にぶつかりました。フィールドに次のようにインデックスを付けました
だから私が打つとき
何も返しませんが、単一の範囲でうまく機能します。あれは
start_at と end_at を日付にするイベント マッピング用の Elasticsearch のインデックスを作成しました。そうしないと、用語の一致が実行されますが、このようなものは答えになりません。
これは文字列の一致を実行するため、トークナイザーは 2012、05、16 に分割され、2012 と 16 以降は複数の領域で一致する可能性があるため、すべての一致が返されるため、すべてのレコードが返されます。
私は非常に基本的な何かが欠けていることを知っています。これについて何か助けていただければ幸いです。
アップデート
というわけで、その日はイベントがあります。今、エラスティック検索で実行すると
ruby-on-rails - meta_searchがモデルの検索を定義しないようにするにはどうすればよいですか?
私はactive_adminを使用しており、それが私のプロジェクトにmeta_searchをもたらしています。(これは他の目的には使用したくない)。
すべてのモデルで検索方法を定義しているようです。つまり、タイヤを含めると、その検索方法を使用できなくなります。
メソッドの定義方法にも奇妙なことがあるようです--method_defined?検索メソッドが定義されていないことを示していますが、それを呼び出すと、meta_searchが取得されます。クラスで独自の検索メソッドを定義しても、Document.searchを呼び出すと、meta_searchが取得されます。
編集:私はこの種のものを扱う一般的な方法に興味があります-私はModel.tire.searchを使用してこの特定の問題を解決しました(タイヤもその方法でアクセスできるため)、しかし私はまだその宝石が嫌いですm使用していなくても、プロジェクトの残りの部分で回避策を使用せざるを得なくなる可能性があります。
編集:回答への回答にコードブロックを含める良い方法がわからないので、ここに配置します。
これについての私の解釈は、クラスが実際にロードされていないときに、検索がすでに定義されているかどうかをmeta_searchが検出する方法にバグがあるということです。やったー!
ruby-on-rails - タイヤジェムを使用して特定のフィールドの Elasticsearch アナライザーを設定する
次のフィールドを持つ Resource オブジェクトがあります: title、description、およびbody。
Tire gem を使用するtitleとdescriptionには標準のアナライザーを使用したいのですが、bodyフィールドには snowball アナライザーを使用したいと考えています。
したがって、resource.rbファイルには次のコードがあります。
マッピングでアナライザーをスノーボールに設定しました。次のコマンドを実行すると、これが機能することを確認します。
調理、調理済みなどを返します。
ただし、次のクエリを渡すことができるようにしたい
そして、elasticsearchで、タイトルフィールドと説明フィールドで cook という単語を検索し、本文でcookという単語を検索するようにします。
これは可能ですか?そして、私はこの検索ゲーム全体に慣れていないので、これは良い考えですか? それとも、私は火の穴の上でガソリンの缶をジャグリングしているだけですか?
ruby - エラスティック サーチとタイヤを使用してアクセントを無視する
私は、タイヤを介して弾性検索を行うプロジェクトを継承しています。
検索は機能していますが、アクセントがオフになっています。たとえば、「これ」を検索すると、「これ」と「これ」が返される必要があります。
このタイヤのドキュメントを読みました: http://karmi.github.com/tire/
同様に:http://railscasts.com/episodes/306-elasticsearch-part-1?view=asciicast
これは、弾性検索のオプションのほとんどがタイヤで利用可能であることを述べています。
アクセントを無視して検索すると、 asciifolding が出てきましたが、エラスティック検索には次のように書かれています。
http://www.elasticsearch.org/guide/reference/index-modules/analysis/asciifolding-tokenfilter.html
さらに、フィルター/アクセント/その他について、次のようないくつかのことを見つけました。
https://github.com/elasticsearch/elasticsearch/issues/890
https://gist.github.com/2142635
しかし、それらはすべて単純なエラスティック検索オプションを使用しています。
Ruby コードで asciifolding フィルターを使用しようとすると、「asciifolding」にフィルターが定義されていないというエラーが表示されます。
これが私のコードで行われている検索の根性です - これを変更してアクセントを区別しない検索を行うにはどうすればよいですか。それはasciifoldingですか?もしそうなら、どうすればここで宣言できますか?
編集:または、おそらくマッピング/インデックス作成で行う必要がありますか? そして、インデクサーを再実行します。マッピングは次のとおりです。いくつかのインデックスに :filter => "asciifolding" を入れてみましたが、うまくいかなかったようです (エラー出力も生成されませんでした):
ruby-on-rails - 属性に依存する動的インデックス(タイヤ、Rails)-ElasticSearch
ルビーのクラスがあります
クラスを初期化した後、index_nameを動的に設定するにはどうすればよいですか?
Ruby(1.9.3)Rails(3.2.3)タイヤ(0.4.2)
ruby-on-rails - Elasticsearchの「欠落している」フィールドに基づいて結果を除外できません
Railsアプリケーションでelasticsearchとやり取りするためにtire-0.4.2を使用しています(mongodbとやり取りするためにmongodbデータベースとmongoidを使用しています)。スパムドキュメントが埋め込まれた投稿モデルがあります。
post.rb
spam.rb
スパムドキュメントがないすべての投稿を取得したい:タイヤのクエリは次のとおりです
生成されたelasticsearchクエリ:
クエリの結果は、スパムドキュメントが欠落しているドキュメントのみを検索しているにもかかわらず、スパムが存在するドキュメントを示しています。私がしている間違いが何であるかわかりません。誰かが私を正しい方向に向けることができますか?