問題タブ [trigram]

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 投票する
3 に答える
2557 参照

python - 特定のトークンの前後に単語を取得するにはどうすればよいですか?

私は現在、基本的なコーパス データベースを作成し、テキストをトークン化するプロジェクトに取り組んでいます。しかし、私は問題に行き詰まっているようです。これらのものがあると仮定します:

ここで、トークンの前後の単語を見つけたいと思います。

トークンが文を開始する、トークンが文を終了する、またはトークンが文のどこかに現れる可能性があるため、上記の正規表現ルールを使用しました。実行すると、次のようなことに出くわします。

\b\w\b または \b\W\b も試しましたが、残念ながら、間違った結果を返す代わりに結果が返されませんでした。私は試した:

質問が曖昧すぎないことを願っています。

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

postgresql - postgresqlはテキスト列でトライグラムインデックスを使用していませんが、varchar列で使用しています

したがって、基本的には、postgresql 9.1 (ストック Debian 安定版) のトライグラムおよび全文索引作成機能をテストするための非常に単純なテスト テーブルをセットアップしました。

テーブルとインデックスの定義は次のとおりです。

私の問題は、%foo%トリグラム インデックスを使用する必要がある検索を行う場合、テキスト列を検索すると、次のようにならないことです。

しかし、varchar600 列を検索すると、trigram インデックスが使用され、驚くほど高速ではありません。

したがって、最終的な質問は次のとおりです。

  • postgres がテキスト列にトライグラム インデックスを使用しない理由。
  • postgres でインデックスを使用するにはどうすればよいですか? 他の方法で定義する必要がありますか?
0 投票する
4 に答える
2498 参照

ruby-on-rails - Rails でのトライグラム検索の移行

移行があります:

次のコードを生成しますschema.rb

その後、実行するrake db:schema:loadと間違ったSQLが生成されます:

まず、次のように述べています。

エラー: データ型文字の変化には、アクセス メソッド "gin" のデフォルトの演算子クラスがありません

第二に、失われてgin_trgm_opsいます。

それを機能させる方法は?

Rails 4.2

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

performance - Similarity Postgres ファジー自己結合クエリによるパフォーマンスの向上

テーブルをそれ自体に対して結合し、(トリグラム比較を使用して) ファジー文字列比較を行って、可能な会社名の一致を見つけるクエリを実行しようとしています。私の目標は、あるレコードの会社名 (ref_name フィールド) のトライグラムの類似性が別のレコードの会社名と一致するレコードを返すことです。現在、しきい値を 0.9 に設定しているため、同様の文字列を含む可能性が非常に高い一致のみが返されます。

自己結合によって多くの比較が発生する可能性があることはわかっていますが、できる限りクエリを最適化したいと考えています。すぐに結果を得る必要はありませんが、現在実行しているクエリの実行には 11 時間かかります。

Ubuntu 12.04 サーバーで Postgres 9.2 を実行しています。ref_name フィールド (照合するフィールド) の最大長がわからないので、 に設定しましたvarchar(300)。テキスト型に設定するとパフォーマンスにまったく影響するのでしょうか、それともパフォーマンスを高速化するために使用するより良いフィールド型があるのでしょうか。私LC_CTYPELC_COLLATEロケールはに設定されています"en_US.UTF-8"

クエリを実行しているテーブルは、合計で約 160 万件のレコードで構成されていますが、実行に 11 時間かかるクエリは、その小さなサブセット (約 100k) に基づいています。

テーブル構造:

インデックス:

クエリ:

プランの説明:

サンプル レコードを次に示します。

ご覧のとおり、処理を高速化するために要点トライグラム インデックスを作成しました (比較のために、これまでに 2 つの異なるタイプを試しました)。このクエリのパフォーマンスを改善し、11 時間からより管理しやすい時間に短縮する方法について、誰か提案はありますか? 最終的には、この小さなサブセットだけでなく、テーブル全体でこのクエリを実行してレコードを比較したいと考えています。

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

ruby-on-rails-4 - 部分文字列のpg_searchメールアドレス

私は pg_search を使用して、顧客の名前と電子メール アドレスを full_text_search します。メールアドレスのドメイン部分で検索した場合、どうすれば一致しますか? たとえば、hotmail は、hotmail アドレスを持つすべての顧客を返します。

これまでに行った手順には、trigram 検索の使用と、trigram 検索用の psql 拡張機能の追加が含まれます。この記事のコメント、pg_search gem for substring を使用した Rails での PG 全文検索は、テキスト検索辞書を作成する必要があることを示しています。メールアドレスを分割する方法を知っている人はいますか?