BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース PostgreSQLでフルテキスト検索が可能なDjango 1.10

PostgreSQLでフルテキスト検索が可能なDjango 1.10

原文(投稿日:2016/08/09)へのリンク

Djangoのバージョン1.0がリリースされた。PostgreSQLのフルテキスト検索,Unicodeユーザ名の公式サポート,新しいタイプのミドルウェアなどが新たに提供されている。

Django Software Foundationによる動的言語の今回のメジャーリリースでは,django.contrib.postgres.searchモジュールのデータベース関数を使って,PostgreSQLのフルテキスト検索エンジンを簡単に利用することができる。

データベースの1つの列に対して単純な検索を使用する,次のようなサンプルが開発チームから提供されている。

>>> Entry.objects.filter(body_text__search='Cheese')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]

“データベース内のbody_textフィールドからto_tsvectorを,検索語’Cheese'からplainto_tsqueryを,いずれもデフォルトのデータベース検索設定を使用して生成します。検索結果はクエリとベクタとのマッチングによって取得されます。この検索ルックアップを使用するには,’django.contrib.postgres’がINSTALLED_APPS内になければなりません。”

こちらのDjango Documentationには,SearchVector, SearchQuery, SearchRankのサンプルも用意されている。

Django 1.10で新たに導入されたものとしては,この他にも,“DEP 0005で定義された古いタイプのミドルウェアにおける,階層化された厳格な要求/応答の欠如”に対するソリューションなどがある。

“Djangoのリクエスト/レスポンス処理へのフックのフレームワーク”,Djangoの新しいミドルウェアでは,MIDDLEWAREおよびMIDDLEWARE_CLASSESと互換性を持ったミドルウェアクラスを作成する手段として,django.utils.deprecation.MiddlewareMixinが提供されている。

資料には次のように,“ミックスインの提供する__init__()メソッドは省略可能な引数としてget_responseを取得し,それをself.get_responseにストア”する,と説明されている。

__init__()メソッドは,
  1. self.process_request(request)を(定義されていれば)呼び出す。
  2. self.get_response(request)を呼び出して,その後,ミドルウェアとビューから応答を取得する。
  3. self.process_response(request, response)を(定義されていれば)呼び出す。
  4. 応答を返す。

Djangoの最新リリースに関するニュースは,ネットでは好意を持って受け入れられ,Channelsの対応リクエストが繰り返し寄せられている。

HackerNewsユーザのTom Forbes氏は“Django 1.10 released”ディスカッションで,“Channelsは残念ながら,今回のリリースには組み込まれていないようです”とコメントした。これに対してはubernostrum氏が,“Channelsは間もなく対応するでしょう。1.10には間に合わなかったようですが,1.11ではスケジュールを合わせて,Djangoと同時にリリースしてほしいと思います。”と返答している

ユーザのpassiveincomelg氏はそこまでの確信がないようで,“Channelsについては迷っています。機能的にはクールですし,Djangoが非同期に対応する必要を巧みに回避する設計がされているのですが,一方では,GoやErlangならば簡単にできることを実現するために,かなり無茶なことをしているからです”,と述べている

Django 1.10には後方互換性のない変更や,廃止サイクルの終了に伴って削除された機能もいくつか含まれている。

削除された機能の中には,LOGIN_URLおよびLOGIN_REDIRECT_URL設定でのPythonのドット付きパスのサポート,django.core.context_processors, django.db.models.sql.aggregates, django.contrib.gis.db.models.sql.aggregatesなどのモジュール,quote_name_unless_aliasメソッド呼び出しの別名としてのSQLコンパイラの直接呼び出しのサポート,多数のプライベートAPIなどがある。

Pythonで記述されたフリーでオープンソースのアプリケーションフレームワークであるDjangoは,3条項BSDライセンスでリリースされており,InfoQコミュニティからのコントリビューションを歓迎している。

Djangoの改良に貢献したいのであれば,まずはdocs.djangoproject.com/en/dev/internals/contributing/を参照することをお勧めする。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT