皆様はじめまして.リクルートテクノロジーズでエンジニアをしている相野谷と申します. 先週開催された第3回Elasticsearch勉強会で「Elasticsearch+DynamoDB+Node.jsで作る全社基盤」というタイトルで,独自開発したシステムでのElasticsearchの利用例を紹介させていただきました. 発表スライド自体は既にupされていますが,それだけでは初見の人に分かりづらいと思いますので,解説記事を上げさせていただきます. スマホアプリのためのプッシュ通知基盤 今回開発したシステムは,「リクルートグループが開発するスマホ用のアプリでプッシュ通知を送るための基盤」です.このプッシュ通知基盤が提供する条件指定プッシュという機能のために,Elasticsearchを使用しています. システム構成 本システムはリクルートで開発される全アプリから利用されることを想定しているため
jq is a lightweight and flexible command-line JSON processor. jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text. jq is written in portable C, and it has zero runtime dependencies. You can download a single binary, scp it to a far away machine of the same type, and expect
目的 検索用サーバーとして最近注目されているElasticsearchですが、ついに1.0 RC1がリリースされたそうです。 Googleトレンドを見ても、この分野で先行するApache Solrに迫る勢いを感じます。 そういうわけで私もElasticsearchについて興味を持って調べてみましたが情報がちょっと少ないですね… 「調べたけど断片的な情報しかない」 「公式doc英語だし、専門用語が多すぎてわからん」 「え、できること多すぎ。よくわからん。どれが重要?」 と言った感じで、最初ちょっと大変… そこで調べ始める人が、概観をつかむためのチュートリアルをつくろうと思います。 コマンドを全部実行する必要ありません。用語をおさえることで調べものが捗ることがひとつのゴールです。 自分の理解の整理も兼ねています。間違ってる箇所あったら教えて下さい。 part 1:ESを使ってレストラン検索を作
(募集はダミーデータです) (参考: ドキュメント登録の流れについては Elasticsearch 入門 を参照すると良いです。) Analyzer 上記のデータを実際に入れる前に、index の作成と analyzer の設定をします。 以下のコマンドを実行することで analyzer の設定ができます。 下記で説明して行きます。 curl -XPUT 'http://localhost:9200/wantedly-demo' -d \ '{ "settings": { "analysis": { "filter": { "pos_filter": { "type": "kuromoji_part_of_speech", "stoptags": [ "助詞-格助詞-一般", "助詞-終助詞" ] }, "greek_lowercase_filter": { "type": "lowerc
2014年4月21日は、第4回Elasticsearch勉強会ですね! http://elasticsearch.doorkeeper.jp/events/8865 第4回Elasticsearch勉強会は、参加希望者が約200名の大反響なようです。 私は勉強会に参加できないので、C言語で書かれた国産の高速な全文検索エンジンGroongaと、Javaで書かれた世界的に勢いのあるElasticsearchについて性能の比較をしたいと思います。 注意事項 今回の検証では1台あたりの馬力を比較するためにサーバ1台での全文検索性能について比較しています。 私は、Groonga(Mroonga)の利用暦が約2年であるのに対し、Elasticsearchの利用暦は2日です。このため、Elasticsearchに対するチューニングの不備や公平な比較になっていない点が含まれている可能性があります。 Ela
その1、その2で説明してきた内容をふまえ、日本語全文検索向けのアナライザーを考えてみました。 日本語全文検索のためのアナライザー次の設定サンプルは、基本的な日本語検索の為の ja アナライザーと、ja アナライザーにプラスして同義語検索を実現する為の ja_synonym アナライザー、Nグラム検索用の ja_ngram アナライザーを定義しています。 実際に使用する際には、これらの3つのアナライザーをフィールド毎に使い分けて使用することで、いろいろなシーンで活用できるはずです。 # 設定サンプル # edit: $ES_HOME/config/elasticsearch.yml index: analysis: filter: synonym: type: synonym synonyms_path: analysis/synonym.txt stopword: type: stop s
Elasticsearch では、すでに日本語で全文検索する為のトークナイザーやノーマライズなどの加工処理で使用するフィルターなどがビルトインまたは、サードパーティ製のプラグインとして多数存在します。 ここでは、日本語全文検索で使用しそうなトークナイザーやフィルターなどを説明します。 主要モジュールNGram Tokenizer N-グラムを提供するトークナイザーです。Elasticsearch にバンドルされています。Japanese (kuromoji) Analysis for Elasticsearch 日本語形態素解析を提供するプラグインです。各種 Analyzer、Tokenizer、TokenFilterが含まれます。cjk_width Token Filter 半角・全角などを統一するためのフィルターです。Elasticsearch にバンドルされています。Lowercas
日本語は、分かち書きしない言語のため日本語でちゃんと全文検索できるようにする為には、検索対象のコンテンツの内容、利用するユーザーのスキルなどを考慮しなければ検索精度を向上させることは非常に困難です。逆を言えば、検索対象のコンテンツ、利用するユーザーのスキルが変われば設計が変わってくると言えます。 日本語を検索できるようにトークナイズするには、代表的なものに形態素解析とN-グラムがあります。簡単に説明すると形態素解析を検索で使用すると、単語単位で検索するため、適合率が高く(マッチ度が高いものが検索される)、再現率が低くなります(検索漏れが多くなる)。例えば、キーワード ”京都” では、”東京都” はヒットしません。一方、N-グラムを検索で使用すると、データベースのLike検索に近い検索が可能になり、形態素解析とは逆に、再現率が高くなり、適合率が低くなります。 これらの日本語解析の特徴と、検索
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く