Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Solrイントロダクション #TechLunch
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Livesense Inc.
PRO
April 21, 2014
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Solrイントロダクション #TechLunch
Solrイントロダクション
2012/10/31 (水) @ Livesense TechLunch
発表者:松永 一郎
Livesense Inc.
PRO
April 21, 2014
More Decks by Livesense Inc.
See All by Livesense Inc.
Rubyはただの⾔語に⾮ず
livesense
PRO
0
520
28新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
120
27新卒_総合職採用_会社説明資料
livesense
PRO
0
7.1k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
12k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
540
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
1
1.8k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
680
26新卒_総合職採用_会社説明資料
livesense
PRO
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
74k
Other Decks in Technology
See All in Technology
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
150
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.4k
品質と信頼性を地続きにする
grimoh
1
770
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
4
300
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.2k
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
550
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.2k
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
950
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
150
LLMに渡さなかった仕事
nanaism
0
780
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
1
2.3k
Featured
See All Featured
Navigating Team Friction
lara
192
16k
WCS-LA-2024
lcolladotor
0
830
Code Review Best Practice
trishagee
74
20k
Believing is Seeing
oripsolob
1
220
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
The Cult of Friendly URLs
andyhume
79
7k
The Curious Case for Waylosing
cassininazir
1
510
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
A Tale of Four Properties
chriscoyier
163
24k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Transcript
Solr使ってみた レジュメオープン化への適用
はじめに(免責事項) すいません。現在時刻、2012/10/31 (水) 16:22 ようするに、当日に作ってるありさまです。 な、わけなんで、ちょっと内容荒くてすいません。そ して、よみにくいです。すいません。 一時はキャンセルする事も考えたのですが、
が頭をよぎったんで、がんばりました。
なにを話すか そもそもsolrは全文検索出来る言うけど、詳細には 何が出来るの?って話をします。 転職会議のサブプロジェクトである所のレジュメ オープン化プラットフォームに於いてメインの検索 エンジンとして使う際の、使い所的な話とかをする つもりです。
簡単なSolrの出来る事説明 Solr自体は、 • なにかしらのデータ(mysqlだったり、xmlだった りテキストだったり、なんでも良い)を、要素(更新 日付とかタイトルとか本文とか)に分けて、イン デックス化し、そのインデックスをフィールドと呼 ばれる部分に格納する • フィールドを指定して、文言検索する。
という事が出来ます。
Solrデータ構造 +: n件保持 -: 1件保持 solr + doc -uniqueKey (fieldの特種な形)
+field [+|-] value +dynamic field [+|-] value
fieldについて fieldはvalueを持ちます。valueにデータの対応要 素のインデックス情報が入ります。 設定によってはデータそのものも入れる事が出来 ます。 検索する場合には、このfieldに、query文字列であ るところの「◦◦」が入ってるdocを頂戴的に行ない ます。
fieldについて (default search field) いちいち検索する時にfieldを指定するのが面倒な 時もあると思います。それ用としてfield指定しな かった場合に暗黙的に対象となるfieldを指定する 事が可能です。 習慣的にfield名は text
とするようです。
fieldについて (multi valued) 1fieldに複数のvalueを入れる事が可能です。 例えば、メールの場合、検索する際に、subjectも fromもtoもbodyもdateも串刺しで検索したい場合、 投入する1 fieldに全部投入して、そのfieldを対象 に検索する事が可能です。
fieldについて (multi valued) filedとしてSubject, From, To, Body, Dateを定義 し、それぞれにそれぞれの要素のindexを格納す る。また、text
fieldにもそれぞれの要素のindexを 格納する事が可能と言う事です。 subjectで絞りたい時にはsubject fieldに対して、 発信日時で絞りたい時にはdate fieldに対して queryを発行。 あるいはそれらをグチャグチャでquery発行したい 場合は、text fieldに対して発行。
field (型: fieldType) fieldは型を持ちます。正しく言うと、fieldが保持す るvalueの型です。 型とは、簡単に言うと、インデックス化する際に、ど のように単語を分かち書きしますか?定義みたい なものです。 もちろん、int,boolean, floatなどもありますが、メイ
ンとなるのは、string型をどのように分かち書きしま すかによる型の設計になります。
fieldType 例えば、日本語を対象とするfieldの場合ですが、 • 辞書で分かち書きしたいfieldの場合 • n-gramで分かち書きしたいfieldの場合 • 英語等のように空白で分かち書きしたfieldの場合 などがあると思います。 それらを、それぞれ、
• text_ja • text_n_ja • text_en のような型を宣言/設定し、各fieldはどの型を利用するかを記述 します。
dynamic field 今迄説明して来たfieldは、事前に定義体で、この fieldはこういう名前で、こういうvalue(型)で入れる と設定する必要がありました。 でも、各docに動的にfieldを足す事も出来ます。そ のfieldがdynamic fieldです。
dynamic field レジュメの場合、スキルという項目があり、 • TOEIC: 713 • 英検: 1級 •
会話: ビジネス用途 • java: 2年 みたいに、複数持つ事があると思います。 また、検索する際に、「TOEIC 500点以上」、かつ、「javaを3年 以上」、自己PRに「火消し」が入っているで絞りたい場合がある と思います。
dynamic field どんなスキルがあるかをマスタ管理する方法もあると思います が、複数メディアを統合するサービスだとそれもなかなか大変 かと思います。 また、フリーワード検索との併用が難しい(mysqlのqueryとsolr へのqueryの2段回呼び出しが必要になる)状態になります。
dynamic field それらを全てsolrに寄せる事が可能なのが、 dynamic fieldになります。 データ投入の際に、dynamic filedとして、TOEIC fieldや、英検 filedを足し、valueとして、700や1等 を設定し、queryとして英検
fieldが500以上でみた いなqueryが発行出来ます。
dynamic field skill fieldを作り、その下にkey:valueで入れればい いじゃん的な発想もあると思いますが、valueは index情報が入る場所なので、fieldの入れ子は出 来ません。
fieldがどう保持されているか 実際の値 (エンジニアでtext fieldを検索) curl 'http://localhost:8983/solr/select?indent=on&version=2.2&q=%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82% A2&fq=&start=0&rows=10&indent=on' ..... <doc> <date
name="created_at">2012-09-26T15:09:02Z</date> <int name="id">29299</int> <arr name="job_category"><str>生産技術_機械_</str><str>生産技術・生産管理・プロセス開発(電気・電子) </str><str>生産技術・生産管 理・プロセス開発(半導体) </str></arr> <str name="job_content">【具体的な業務内容】 ... </str> <str name="pr_content">私たちの会社は、一人ひとりの エンジニアによって....</str> <str name="pr_title">1人ひとりの... </str> <arr name="text"> <str>1人ひとりの... </str> <str>【具体的な業務内容】 ... </str> </arr> <date name="updated_at">2012-09-26T15:21:16Z</date> <float name="生産技術_機械__ja">6.3</float> <float name="生産技術・生産管理・プロセス開発(半導体) _ja">8.9</float> <float name="生産技術・生産管理・プロセス開発(電気・電子) _ja">3.6</float> </doc> .....
dynamic field query: select w.id, jc.name from partner_work w inner
join patner_work_job_relation jr on (w.id = jr.partner_work_id) inner join job_small_category jc on (jr.job_small_category_id = jc.id) where w.id = 29299; result: *************************** 1. row *************************** id: 29299 name: 生産技術(機械) *************************** 2. row *************************** id: 29299 name: 生産技術・生産管理・プロセス開発(電気・電子) *************************** 3. row *************************** id: 29299 name: 生産技術・生産管理・プロセス開発(半導体) 3 rows in set (0.00 sec)
dynamic field 生産技術(機械)のfieldが6〜9の範囲値を持つ情報を抽出 $ curl 'http://localhost:8983/solr/select?indent=on&version=2.2&q=%E7%94%9F%E7%94%A3%E6% 8A%80%E8%A1%93_%E6%A9%9F%E6%A2%B0__ja%3A%5B6+TO+9% 5D&fq=&start=0&rows=10&fl=id+%E7%94%9F%E7%94%A3%E6%8A%80%E8%A1%93_%E6%A9% 9F%E6%A2%B0__ja&indent=on&wt=csv' id,生産技術_機械__ja
95,7.3 234,7.6 368,7.0 1183,6.2 1189,7.0 1356,8.7 1528,7.8 1540,6.8 1582,6.3 1801,8.8
わかちがきとsynonym なかなか調整が難しいです。 詳細は実演で。
最後に。 TermsComponentで存在しうる単語のsuggestの調査にまだ 未着手。これないと、スキルのフリー文言検索が結構しんどくな るなーと思ってます。 日付での検索が( ゚Д゚)マンドクセーだったり、いろいろあるのです が、とりあえず、 • https://confluence.livesense.jp/pages/viewpage.action? pageId=32768534
• https://confluence.livesense.jp/pages/viewpage.action? pageId=32768699 あたりに適当に纏めているので、参考にして下さい。