10

私はPostgresを初めて使用し、全文検索機能に出会いました。私は次のことを達成したい:

  • 検索するテーブルとフィールドを指定します。
  • ユーザーがテキストを検索する場合、上記の指定されたテーブル フィールドで検索する必要があります。

例えば

CREATE TABLE customer (name text)
CREATE TABLE address (city text)

「Ram」を検索すると、名前「Ram*」と市区町村「Ram*」の両方が見つかるはずです (最大 10 レコードまで)。

オープンポイント:ランキング。

簡単ではないかもしれませんが、同様のことを達成するためのステートメントの例を提供できますか?

4

1 に答える 1

13

これについては、全文検索に関する PostgreSQL のドキュメントで詳しく説明されており、複数の列を検索して重み付けする例が示されています。

特に、全文検索の制御ドキュメントの操作を参照してください。検索結果のランキングでは、ランキングもすぐそこにあります。

あなたはもっと多くのことを言うのに十分な情報を提供していません. 複数のテーブルを検索するには、通常JOIN、テーブルをクエリしてからクエリを実行するか、最適なパフォーマンスを得るために、インデックスを作成してクエリを実行できるトリガー管理のマテリアライズド ビューを作成します。

テーブルが独立していて関連性がない場合、単一のクエリでそれらをクエリするのはあまり意味がありません。通常、これには複数の tsearch2 クエリを使用します。クエリ結果をランク付けすることは可能だと思いますがUNION ALL、2 つのテーブル間でランク付けが一貫しているという保証はありません。

于 2012-11-06T23:46:04.263 に答える