問題タブ [pg-search]

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.

0 投票する
1 に答える
860 参照

ruby-on-rails - 関連付けを使用する pg_search でのクエリの高速化

pg_search gem を使用して PostgreSQL の全文検索機能を利用する Rails アプリがあります。

マニュアルには、(たとえば) has_many リレーションを持つモデルの検索について記載されています。

アソシエーションの検索

関連モデルの列を検索することができます。これを行うと、データベースのインデックスで検索を高速化することができなくなることに注意してください。ただし、クロスモデル検索を試すための簡単な方法としてサポートされています。

最後の行は、これが関連付けによる検索をプロトタイプ化するための良い方法であることを示唆しているようです。そして、はい、それは確かに機能します。しかし、通常、結果を返すまでに 10 秒の待ち時間があります。高速なクロスモデル検索を行う方法はありますか?

両方のモデルを別々に検索してから、結果をマージしますか?

0 投票する
1 に答える
2438 参照

ruby-on-rails - SQLite3::SQLException: 認識されないトークン: ":":

pg_search の実行に問題があります。正しく設定されていると思いますが、何らかの理由で検索を実行しようとすると、次のようになります。

コースモデル:

検索コントローラー:

HTMLで:

これは .each が原因である可能性はありますか? <%= @course %> のみを保持すると、ページが読み込まれ、次のように表示されます。

.each 関数を渡す前に、結果の配列を変換する必要がありますか?

0 投票する
0 に答える
85 参照

ruby - 内容が変更された pg_search

pg_search が保存する前に列の内容を変更する方法を知っている人はいますか?

完全な説明:

Articletitleとを持つモデルがありますbodybody記事の本文 html を格納します。

PgSearch は で構成されていmultisearchable against: [:title, :body]ます。

検索すると、html タグが含まれた検索コンテンツが表示されますが、最初に new を作成する前に、テキストからすべての html タグを削除したいと考えていますPgSearch::Document

0 投票する
1 に答える
241 参照

ruby-on-rails - 値の静的リストからのモデル化の選択肢

0 個以上の静的値に関連付けられている可能性のあるモデルがあります。たとえば、映画やジャンル (ホラー、アクションなど) です。genresモデルに配列を作成したいのですが、これをデータベースに反映させる最善の方法がわかりません。

pg_searchRails/AR 4 と Postgres をgemと一緒に使用しています。

genresテーブルを作成し、その 2 つの間に結合テーブルを作成するという古典的なルートをたどることができます。genresただし、あまり頻繁に変更されないため、これは少しやり過ぎのように思えます。

genre列挙型を作成し、モデルに の配列を作成することはできますが、genreActive Record がこの種のメカニズムをどの程度サポートしているかはわかりません。

ジャンルやその他の基準 (キーワード、長さ、評価など) に基づいて映画を検索できる必要があります。

ベスト プラクティスやリソースをお寄せいただければ幸いです。より単純な、またはより単純なソリューションがありませんか? 上記のいずれかで、予期しない方法で問題を解決できないことがありますか?

0 投票する
1 に答える
975 参照

ruby-on-rails - モデル スペックを記述して PgSearch text_search クエリ メソッドをテストする方法 (Rspec、Rails、Postgres)

次のメソッドのロジックがクエリが渡されるかどうかに関係なく機能することをテストするモデル仕様で、いくつかのテストを作成しようとしています。

models/payment.rb

ここに、私が書こうとしている種類のテストの例を示しますが、これを達成するための最良の方法を空白にしています。

/spec/models/payment_spec.rb

0 投票する
1 に答える
97 参照

ruby-on-rails - Batch text search with PostgreSQL

I have a Rails 4 app with PostgreSQL database. I use PSQL default full text search for some fields, such as university_name. I need to send hundreds of full text search query at a time against my database.

Right now, I perform these queries serially, and it is very slow. Is there any way I can send text search in batch mode?

0 投票する
2 に答える
2202 参照

postgresql - 検索が遅すぎる。pg_search gem を使用して Rails アプリで postgres データベースのインデックスを再作成するにはどうすればよいですか?

アプリの検索機能に pg_search gem を使用しています。pg_search を追加する前に、Postgres データベースのテーブルに 130,000 行のデータを既に追加していました。検索を実行すると、時間がかかりすぎます。つまり、約 16000 ミリ秒かかります。

Railscasts Episode343 Full-Text Search in PostgreSQL をフォローしています

pg_search のモデルのコードは次のとおりです。

そして、私のサーバー出力は次のとおりです。

インデックス作成用の移行ファイルは次のとおりです

0 投票する
2 に答える
2718 参照

sql - pg_search を使用した Postgres の全文検索 - includes(:child_model) は、「テーブル 'child_model' の FROM 節エントリが欠落している」という SQL を中断します

pg_search gem で postgres 全文検索を使用しています。検索自体はうまく機能していますが、結果をさらにフィルタリングする必要があります。詳細は次のとおりです。

ノートブック コントローラ:

表示されるエラーは、「テーブル 'invites' の FROM 句のエントリがありません」です。私は次のようなさまざまなことを試しました:

  1. 「含む」を「結合」に置き換える
  2. 'includes(:invites) を joins('LEFT JOIN "invites" ON "invites"."email" = "email" ') に置き換える
  3. .text_search と .includes 呼び出しの順序を変更します。
  4. コントローラー、モデル、スコープ、および text_search 関数定義に include 呼び出しを追加します。

同じエラーが発生し続けます。結合呼び出しを SQL で使用すると、招待メールでフィルタリングされず、各検索結果が複数回繰り返されます。

text_search 自体は問題なく機能しているため、 include(:invites) を削除するだけです。しかし、私は本当にこの条件を含める必要があります。

どんな助けでも大歓迎です。SQL呼び出しが間違っているだけかもしれませんが、.includes(:invites)がpg text_searchなしで機能するのに機能しない理由も理解したいと思います。

編集 #1 - より具体的な質問

ここには2つのわずかに異なる質問があると思います。1 つ目は、pg_search gem と 'includes(:invites)' 呼び出しの組み合わせに関する問題のようです。2 番目の質問は、'includes(:invites)' 呼び出しを避けるために使用できる同等の SQL ステートメントは何かということです。ある種のLEFT JOINであるべきだと思いますが、正しく作っているとは思いません。私のデータベースでは、ノートブックには多数の招待があり、招待には「メール」属性があります。current_user の電子メールと同じ電子メールを持つ招待状のノートブックが必要です。

これらのいずれかのヘルプは素晴らしいでしょう。

0 投票する
1 に答える
1012 参照

ruby-on-rails - pg_search を使用した特殊文字 (#、+ など) の照合

Rails アプリで pg_search gem を使用して、ユーザー (経歴と関連するスキル モデル) を検索しています。ユーザーは開発者なので、そのスキルには「CSS」、「C++」、「C#」、「Objective C」などがあります...

最初は次の検索範囲を使用していました。

ただし、この場合に「C++」を検索すると、「CSS」を含む結果が得られます (とりわけ)。「単純な」辞書を使用するようにスコープを変更し、プレフィックスを削除しました。

これにより、いくつかの問題が修正されました。たとえば、「C++」を検索しても「CSS」が表示されません。ただし、「C++」または「C#」を検索しても、「C」または「Objective C」がリストされているユーザーと一致します。

私は間違いなく基本的なILIKE一致を行うことができますが、可能であれば pg_search を使用してこれを達成したいと考えています。