Picture Factory-仕組み パート2

最後に、 最初の約束のように2番目のパートを書きました。 このパートでは、プロジェクトのクライアント側についてお話したいと思います。



使用されるもの:



前述したように、プロジェクトは完全にPythonで記述されています(Cython挿入を使用)。 画像、ユーザー、統計に関するすべての情報はMySQLデータベースに保存されます。



Sphinxサーバーは、検索(メイン)およびフィルターに使用されます。 ツイストtxsphinx用に作成されたクライアント。



「いいね」の場合、Redisは画像の表示回数とダウンロード回数を使用します。 Redisは、トップ画像(メインページ)と「類似画像」(画像自体のページ)も保存します。 ツイストクライアントtxredisの場合、広大でわずかに変更されています(まだ公開されていません)。



Web:Jinja2テンプレートエンジンを備えたTwistedWeb。すべてがBootsrapとJqueryによって描画されます。 チェーンの終わりはNginxです。



興味深い部分:



最初の(そして最も興味深い)ことは、イメージフィルターを作成することでした。 まず、検索するフィールドのリストがコンパイルされました。



Sphinxを使用してフィルターを作成することにしました。 インデックス作成はxmlpipeを通じて行われます。 sphinxの定義は非常に簡単です。



source images { type = xmlpipe2 xmlpipe_command = bin/sphinx.py --indexer=images } index images { source = images path = /var/lib/sphinx/data/images morphology = stem_enru charset_type = utf-8 min_word_len = 2 min_infix_len = 3 enable_star = 1 docinfo = extern html_strip = 1 index_exact_words = 1 expand_keywords = 0 wordforms = images_wordforms.txt }
      
      





カテゴリ:MVA属性、リストID。 また、テキスト属性はカテゴリ名のリストです(正しい検索のために、結果に重みを追加します)。



最小画像解像度:2つの属性widthおよびheight 。 ここでは、ユーザーが設定したものから最大値(マジックナンバー10000)まで、各属性の範囲で検索することもすべて簡単です。



キーワード:3つのテキスト属性タイトル タグ キーワード 。 タイトル-画像のタイトル。ヒットすると、結果に最大の重みが与えられます。 タグ-画像タグのリスト、平均重量。 キーワード-画像ページで撮影された一連のキーワード(ユーザーには表示されません)には、ゴミが含まれている場合があります。 軽量です。



色:最も難しかったです。詳細を説明します。 カラーパレット{ID => RGB}が作成されました。 データベースに画像を追加するとき、主要な色のリストを取得し、それらをパレットと同等にします。 画像の色は、色IDと画像に占める割合の2つの値とともにデータベースに保存されます。 インデックスには10個のMVA属性「c_X」があります。Xは0〜9の数字です。画像のすべての色はc_0に、c_1の色はpercent> = 10、c_2の色はpercent> = 20などになります。



色でフィルターする:色で画像を検索する場合、色がインデックスc_1にあるすべての画像が撮影され、色の重みが考慮されます。 ID 2(疑似コード)の色で検索する場合:



 setSelect('(IN(c_1,2)*1) + (IN(c_2,2)*1) + (IN(c_3,2)*1) + (IN(c_4,2)*1) + (IN(c_5,2)*1) + (IN(c_6,2)*1) + (IN(c_7,2)*1) + (IN(c_8,2)*1) + (IN(c_9,2)*1) AS colors_weight') setOrder('colors_weight DESC')
      
      





おそらく、色の検索は最適な方法で行われていませんが、これは私が思いついたものの中で最も成功したものです。



結果:



フィルター速度は私を幸せにします、今では70,000枚の画像で約50-80ミリ秒です。 このプロジェクトで他に何かおもしろいことがあれば、聞いてください。喜んでお話しします。 再びプロジェクト自体: http : //picsfab.com



All Articles