SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
「外資就活ドットコム」のサイト内検索を
    作るときに考えたこと
         Yoshiyuki Onishi
   Director / CTO Howtelevision, Inc.
外資就活ドットコムとは
外資就活ドットコムでは、グローバルプロフェッショナルを目指す上位校学生にとって必要なトップ企業の選
考情報・イベント情報・業界研究に役立つコラムをタイムリーに提供しております




・月間
1,100,000 PV
150,000 UU
どういったコンテンツがあるのか
コラム記事がはてなブックマークのホッテントリに
groonga 導入以前

当初 WordPress のブログとして運営開始、
WordPress の検索機能

サイトの成長に伴い、コンテンツの種類が増加
コンテンツの種類     特集

● コラム
● 選考情報



 各企業の採用情報   企業研究
検索対象コンテンツを整理する

● 検索条件
 ○ priority
 ○ date
 ○ マッチング対象


● 検索結果表示
 ○   url path
 ○   タイトル
 ○   スニペット
 ○   DB のテーブル, 抽出条件
検索対象となるコンテンツの分類
検索項目


 ページ種別     priority   マッチング対象   テーブル              抽出条件

 コラム特集     1          タイトル      posts             post_type = 'special' AND
                      本文                          post_name LIKE 'column_%'

 採用情報ページ   2          企業名, 概要   com_page          status = 'publish' AND id > 1
 (企業広告)

 企業研究      3          企業名       company_study

 コラム       4          タイトル      posts             post_type = 'post' AND
                      本文                          post_status = 'publish'

 募集情報      4          タイトル      recruiting_info   status = 'publish'
                      本文
検索対象となるコンテンツの分類
結果の表示に用いる項目


 種別        url path                     type              タイトル         スニペット

 コラム特集     /cpecail/column_{id}         special           <タイトル>       post_content から
                                                                       ショートタグを除いた
                                                                       もの

 採用情報ページ   /company/{id}                company_page      <企業名>の採用情報   会社概要
 (企業広告)

 企業研究      /company_study/{id}          company_study     <企業名>の企業研究   のインターン・新卒採
                                                                       用の募集情報、選考
                                                                       対策、口コミ、給料、
                                                                       採用ページを集めた
                                                                       関連リンク集などを
                                                                       掲載。

 コラム       /archives/{id}               column            <記事タイトル>     本文からキーワード
                                                                       周辺を抜粋

 募集情報      /recruiting_info/view/{id}   recruiting_info   <記事タイトル>     本文からキーワード
                                                                       周辺を抜粋
groonga インデックスのスキーマ定義
table_create --name Item --flags TABLE_HASH_KEY --key_type ShortText
column_create --table Item --name title --flags COLUMN_SCALAR --type ShortText
column_create --table Item --name content --flags COLUMN_SCALAR --type Text
column_create --table Item --name post_date --flags COLUMN_SCALAR --type Time
column_create --table Item --name priority --flags COLUMN_SCALAR --type Int32
column_create --table Item --name type --flags COLUMN_SCALAR --type ShortText


table_create --name Bigram --flags TABLE_PAT_KEY|KEY_NORMALIZE --key_type ShortText --default_tokenizer TokenBigram
column_create --table Bigram --name title_index --flags COLUMN_INDEX|WITH_POSITION|WITH_SECTION --type Item --source title,content




 ●     N-gram
 ●     複数のカラム(タイトル、本文)に対して1つのインデックスを付与
検索クエリ
 $qs = http_build_query( array(
          'table'         => 'Item',
          'match_columns' => 'title||content',
          'query'         => $args['q'],
          'output_columns' => '_key,type,title,content,_score,post_date',
          'sortby'        => 'priority,-post_date,_score',
          'limit'         => $per_page,
          'offset'        => $offset
      ) );

 $url = "http://xxx.xxxxxx.xxx:port/d/select?$qs";
記事の更新/削除とインデックス反映



   WebApp      query over HTTP         groonga
   (cakephp)                            httpd          groonga
                                                         DB

                                         Job Queue
                           post ID     (TheSchwartz)

                  add queue

  WordPress
                                       DB
                                     (MySQL)
検索結果の例:企業名

 
検索結果の例:業界名

 
アプリケーション側で実装
● ページング

● スニペット, 検索ワードのハイライト

● 種別をラベルとして表示
  ○ 募集情報 / コラム / 企業研究 / 特集 / 採用情報
ご清聴ありがとうございました
まとめ

● 検索対象を整理する

● 検索結果の表示
 ○ 何を表示するか
 ○ 並び順


● 検索クエリ

Weitere ähnliche Inhalte

Ähnlich wie 2012 11 29 groonga 勉強会 発表資料

脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
 
Cocoa Pro5
Cocoa Pro5Cocoa Pro5
Cocoa Pro5
hasegawa
 
2014 01-11-tdc-6th-anniversary
2014 01-11-tdc-6th-anniversary2014 01-11-tdc-6th-anniversary
2014 01-11-tdc-6th-anniversary
Chieko Aihara
 
ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門
muracchi
 
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
 

Ähnlich wie 2012 11 29 groonga 勉強会 発表資料 (18)

どこどこJP×Googleアナリティクスで企業アクセスを解析
どこどこJP×Googleアナリティクスで企業アクセスを解析どこどこJP×Googleアナリティクスで企業アクセスを解析
どこどこJP×Googleアナリティクスで企業アクセスを解析
 
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)
 
Django Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作るDjango Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作る
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
 
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用
 
WordPress基礎講座6 テーマの作成実習
WordPress基礎講座6 テーマの作成実習WordPress基礎講座6 テーマの作成実習
WordPress基礎講座6 テーマの作成実習
 
エンジニア戦記 〜小さなチーム、大きな未来〜
エンジニア戦記 〜小さなチーム、大きな未来〜エンジニア戦記 〜小さなチーム、大きな未来〜
エンジニア戦記 〜小さなチーム、大きな未来〜
 
Cocoa Pro5
Cocoa Pro5Cocoa Pro5
Cocoa Pro5
 
Windows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみたWindows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみた
 
Cognos reportauthoring a8_prompt
Cognos reportauthoring a8_promptCognos reportauthoring a8_prompt
Cognos reportauthoring a8_prompt
 
2014 01-11-tdc-6th-anniversary
2014 01-11-tdc-6th-anniversary2014 01-11-tdc-6th-anniversary
2014 01-11-tdc-6th-anniversary
 
ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門
 
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

2012 11 29 groonga 勉強会 発表資料