1. ホーム
  2. データベース
  3. ポストグレスキュー

PostgreSQLのURL解決方法

2022-01-10 10:54:23

PostgreSQLは多数のデータ型をサポートしていますが、URLを格納するのに適切な型はないようです。では、データベースの中のURLデータをどうすればいいのでしょうか?

まず必要なのは、何のためにURLデータを保存しているのかを確認することです。後で問い合わせたときに印刷するためだけなら、varcharやtextのような型でもいいのではないでしょうか?

しかし、単にURLデータを問い合わせるだけでなく、使用されているプロトコルやホスト名などの追加情報をURLから問い合わせたい場合もあります。ここでは、ts_debug関数を使用してこれを行うことができます。

ts_debug関数を使用すると、テキスト検索の設定を簡単にテストすることができます。

ts_debug([ config regconfig, ] document text,
         OUT alias text,
         OUT description text,
         OUT token text,
         OUT dictionaries regdictionary[],
         OUT dictionary regdictionary,
         OUT lexemes text[])
         returns setof record

ts_debugは、テキスト内のパーサーによって識別された各記法に対して1行を返します。返される列は

  • alias text : トークンタイプの短い名前
  • description text : 記法タイプに関する説明
  • token text : トークンのテキスト
  • dictionaries regdictionary[]: このトークンタイプのために選択された辞書を設定します。
  • dictionary regdictionary : その表記法を認識する辞書、または認識する辞書がない場合はNULL
  • lexemes text[].
  • その表記法を認識した辞書によって生成された字句、またはそれを認識した辞書がない場合はNULL。空の配列({})は、その表記法が非活性化単語として認識されたことを示す。

そこで、次のようにURLをパースすることができます。

bill@bill=>SELECT
bill-# alias
bill-# ,description
bill-# ,token
bill-# FROM ts_debug('https://blog.csdn.net/weixin_39540651');
  alias | description | token
----------+---------------+-------------------------------
 protocol | protocol head | https://
 url | URL | blog.csdn.net/weixin_39540651
 host | Host | blog.csdn.net
 url_path | URL path | /weixin_39540651
(4 rows)

参考リンク

https://stackoverflow.com/questions/41633436/datatype-for-a-url-in-postgresql
http://www.postgres.cn/docs/13/textsearch-debugging.html#TEXTSEARCH-CONFIGURATION-TESTING

PostgreSQLでURLを解析する方法についての記事は以上となります。PostgreSQLでURLを解析する方法の詳細については、Script Houseの過去の記事を検索するか、以下の記事を引き続き参照してください。