0

postgres データベースで全文選択クエリを作成したいと考えています。たとえば、「Harry Potter」というタイトルのすべての本を検索したいとします。全文検索でハリーを検索すると、高速に実行されます。例えば

SELECT * FROM books WHERE to_tsvector('simple', cast(title AS text)) @@ plainto_tsquery('simple',cast('harry' AS text))

しかし、ハリー・ポッターのようなタイトルを結合しようとすると、クエリの時間が不足します (1 分など)。

SELECT * FROM books WHERE to_tsvector('simple', cast(title AS text)) @@ plainto_tsquery('simple',cast('harry' AS text)) AND to_tsvector('simple', cast(title AS text)) @@ plainto_tsquery('simple',cast('potter' AS text))

私の間違いは何ですか?この全文検索には、1 つ以上の単語の組み合わせも必要です。

次のように 1 つのクエリで 2 つの単語を組み合わせるよりも優れた解決策が存在する場合

 SELECT * FROM books WHERE to_tsvector('simple', cast(title AS text)) @@ plainto_tsquery('simple',cast('harry potter' AS text))

編集: 何かが見つかりました: 私のハリー・ポッターの数は約 110.000 データです (実際には本で 1 mio データのようです)。たとえば、Ice Fire を検索すると、データベースには 300 件の結果しかなく、クエリは非常に高速に実行されます。おそらく、データベースから返される結果セットに関する問題でしょうか? 私は実際に制限100を使用しています。

4

1 に答える 1