インターネットは私の問題を聞いたことがないようなので、何日もウェブで検索しました:
私は、英国の約 37M レコードを保持する郵便住所データベース テーブルを持っています。このテーブルには、地理空間インデックスと、次のように作成された派生全文インデックスがあります。
create index on gb_locations using gin(to_tsvector('english', "Postcode" || ' ' || "Postcode_outcode" || ' ' || "Road" || ' ' || "Neighbourhood" || ' ' || "Admin2" || ' ' || "Admin3");)
私の全文検索の形式は次のとおりです。
SELECT * FROM gb_locations
WHERE
to_tsvector('english', "Postcode" || ' ' || "Postcode_outcode" || ' ' || "Road" || ' ' || "Neighbourhood" || ' ' || "Admin2" || ' ' || "Admin3") @@ plainto_tsquery('english', 'greenham road rg14')
このクエリは、ほとんどの英国の住所、特にロンドン地域では正常に機能しますが、さらに離れた場所では結果が返されません。
地理空間検索を使用してレコードを見つけることができるため、レコードがテーブルに存在することを確認しましたが、全文検索の場合、データベースがそれを認識していないようです。
これは説明です:
Bitmap Heap Scan on gb_locations (cost=52.04..56.10 rows=1 width=521)
Recheck Cond: (to_tsvector('english'::regconfig, ((((((((((("Postcode")::text || ' '::text) || ("Postcode_outcode")::text) || ' '::text) || "Road") || ' '::text) || ("Neighbourhood")::text) || ' '::text) || ("Admin2")::text) || ' '::text) || ("Admin3")::text)) @@ '''greenham'' & ''road'' & ''rg14'''::tsquery)
-> Bitmap Index Scan on text_search_index (cost=0.00..52.04 rows=1 width=0)
Index Cond: (to_tsvector('english'::regconfig, ((((((((((("Postcode")::text || ' '::text) || ("Postcode_outcode")::text) || ' '::text) || "Road") || ' '::text) || ("Neighbourhood")::text) || ' '::text) || ("Admin2")::text) || ' '::text) || ("Admin3")::text)) @@ '''greenham'' & ''road'' & ''rg14'''::tsquery)
どんなポインタでも大歓迎です。