Elasticsearchで今すぐ使えるビジネス向けトークナイザー『Sudachi』 https://github.com/WorksApplications/Sudachi 【京都開催】Elasticsearch勉強会 #elasticsearchjp https://www.meetu…
Elasticsearchで今すぐ使えるビジネス向けトークナイザー『Sudachi』 https://github.com/WorksApplications/Sudachi 【京都開催】Elasticsearch勉強会 #elasticsearchjp https://www.meetu…
Google に代表される「キーワードサジェスト」機能を Elasticsearch を前提に日本語向けに設計。 よくある要件サイト内で過去に検索された有効なキーワードをサジェストしたい。入力されたテキストに関連性が高く、過去に検索された回数の多い順でサジェストしたい。最初に入力された言葉の後に空白を入力すると、最初の言葉と一緒に検索される複合語の候補サジェストしたい比較的シンプルな要件のように見えますが。。日本語を対象にしたサジェスト機能を実装する場合、入力途中の日本語のテキスト受けながら、ひらがな、カタカナ(半角・全角)、漢字、ローマ字(大文字・小文字・全角・半角)のコンビネーションを合わせて、関連性の高い言葉を素早くユーザーに提案しなければなりません。以外と難しいのです。。 Elasticsearch にも Completion Suggester と言うサジェスト向けの機能があるの
原文: Controlling Analysis | Elasticsearch: The Definitive Guide [2.x] | Elastic controlling analysis 検索クエリは逆引きインデックス*1に存在している単語しか見つけることができません。したがって、indexに紐づくすべてのドキュメントをインデクシングするときに施されるanalysis処理と、検索時にquery文字列に対して施されるanalysis処理が同じであることが重要です。そうでなければ、queryに含まれる単語が逆引きインデックスとマッチしなくなってしまいます。*2 さっき「ドキュメントを」って言ったが、あれは嘘だ。 アナライザーはドキュメントのフィールドごとに設定することができます。各フィールドにつき特定のアナライザを設定することもでき、あるいはそれが失敗すればtypeないしindex
TL;DR 漢字で保持しているユーザの名前をひらがな、カタカナでも検索できるようにします。 使ってみる 以下のURLにアクセスして、上部のサーチボックスから検索が行えます。 ログインするとよりたくさんの結果が返ります。お試しください。 環境 Elasticsearch v1.2.1 kuromoji for Elasticsearch v2.2.0 方針 kuromoji_tokenizerで形態素解析した単語の漢字部分を kuromoji_readingform(TokenFilter)でカタカナに変換してインデックスします。 変換のために別途人名辞書を作成しkuromoji_tokenizerのユーザ辞書に登録して漢字とカタカナの紐付けを行います。 ユーザ辞書はトークンと読みがなを1対1でしか紐づけできないので、word_delimiter(TokenFilter)を活用して1対Nで紐
マッピングタイプを使いすぎないようにする Elasticsearchでは1つのインデックスの中に複数の異なるスキーマ定義を持つことができる。このスキーマ定義をマッピングタイプという。単に「タイプ」と呼ばれる事もある。フィールドのデータタイプとは別の概念。インデックスはデータベースに、マッピングタイプはその中のテーブルに例えられる事が多いが、同じ名前のフィールドはマッピングタイプが異なっていても定義が共有されたりして、データベースのテーブルほど互いに独立していない中途半端なものになっている。(2.0より前のバージョンではタイプごとにフィールド定義が異なっていても多少使えたりしたが、2.0以降は厳密に禁止されるようになった. 参照:Conflicting field mappings) タイプが異なっていてもデータは同じLuceneインデックスの中に混ざって入ってしまうため、タイプ間で互いに影
こんにちは、ホリデー株式会社の内藤です。Holiday ( https://haveagood.holiday/ ) というサービスの開発を行っています。 先日開催した Cookpad TechConf 2016 では、『おでかけスポット検索のむずかしさ - Holiday を支える検索技術』という題で発表を行いました。 おでかけスポット検索のむずかしさ - Holidayを支える検索技術 from Yusuke Naito www.slideshare.net この発表では、 おでかけスポットの検索では、全文検索だけでは満足のいく結果は得られない 地理空間検索に拡張することでよりよい検索体験を作ることが可能 これを実現するための Elasticsearch の機能を紹介 というような内容を紹介しました。 例えば、我々が「中目黒」を思い浮かべた時にイメージするエリア内の住所には、「中目黒」
MySQLは広く使われているRDBMSです。速いし、レプリケーションのノウハウもあるし、Web上にたくさんの情報もあるからいざというときも安心、というのがその理由でしょう。 そんなMySQLの弱点の1つがデフォルトでは日本語で全文検索できないことです。でも、日本語で全文検索したいし。。。どうしよう。 そんなあなたに最近の日本語の全文検索事情を紹介します。Solr?Elasticsearch?Groonga?PostgreSQLはどうやっているの?Mroonga?Sphinx? いろいろ考えると日本語で全文検索するときもMySQLを使うのがいいね!と思えてくるから不思議です。最近の日本語の全文検索事情を聞いて一緒に考えてみませんか?
Elasticsearch ships with a wide range of built-in analyzers, which can be used in any index without further configuration: Standard Analyzer The standard analyzer divides text into terms on word boundaries, as defined by the Unicode Text Segmentation algorithm. It removes most punctuation, lowercases terms, and supports removing stop words. Simple Analyzer The simple analyzer divides text into ter
Elasticsearchで、ドキュメントのフィールドが配列(連想配列)の場合に、そのフィールドの配列に値を追加したい。 ( Elasticsearchネタはほぼ自分用メモですw ) 参考にしたのは Elasticsearch公式サイト。 単純な配列の場合 例としてインデックス名「 sample 」、タイプ名「 mytype 」で作成。 { "mappings": { "mytype": { "_source": { "enabled": true }, "properties": { "name": { "type": "string" }, "tags": { "type": "string" <「string」で良い } } } } }
これはElasticsearch Advent Calendar 2014 の24日目の記事です。 2019/12/03更新 ElasticUtils は開発終了し haystack も開発が停滞しているため、現在はElastic公式の elasticsearch-dsl-py を使うのが最もベターな選択肢でしょう。 前置き Django を使って検索機能を実装する場合、標準ORMである QuerySet を使うと思います。 しかし ORMを通してDBへクエリを発行するので、データ数が数十万件規模だったり、複数の Model をまたぐ検索だとJOINが多くなりパフォーマンスが出ません。 当然といえば当然ですね。 そこで、検索のバックエンドに Elasticsearch を導入するのが一つの案となります。 ここでは、Django に Elasticsearch を導入する方法をいくつか紹介し
セコン (id:secondlife, @hotchpotch) です。ウェブサービスにはよく「このエントリーに関連するブログ記事」や「このレシピに関連するレシピ」という機能が実現されてますよね。さて、この機能はどのように実現すれば良いでしょうか。例えば tf-idf で単語の類似度を求め…といった実装が必要になり、いささか面倒です。 しかしながら Elasticsearch や Solr *1を使うと手軽に実現できます。例えば、クックパッドニュースの記事では Solr を使い「この記事を読んだ人におすすめ」の機能に、最近クックパッドにジョインしたインドネシアの会社の DapurMasak では Elasticsearch を使い「Resep serupa(関連レシピ)」の機能で利用しています。 クックパッドニュースでのこの記事を読んだ人におすすめ DapurMasak での関連レシピ 使
Elasticsearchのクラスタにノードを追加するのは簡単にできる。しかし、インデックスを盛々積んだクラスタにノードをカジュアルに追加すると、一気にシャードのアロケーションが走って負荷があがる。また、何の設定もせずに追加するとsplit brainを起こしやすくなる。適切に設定すれば大丈夫なので、それをまとめておく。 結論 安全にやるなら、 ノード追加前に全shardの移動を止める。 split brainを避けるために、最小のマスターノード数を設定しておく。 ということをしておくとよい。 クラスタ設定はリアルタイムに変更できるので活用しよう。 Cluster Update Settings http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cluster-update-settings.html
Elasticsearch におけるマッピングとは、リレーショナルDBでいうところのテーブル定義に相当します。しかし、単にデータを格納する為のフィールドを用意して型を設定するだけではありません。Elasticsearch では、フィールドの型の他に言語解析処理などのドキュメントを検索可能にする為の各種設定が可能です。 スキーマーレスが一つの特徴の Elasticsearch では、ドキュメントをインデックスすると自動的に各フィールド毎にフィールドタイプなどのマッピングが自動で設定されインデックスが作成されます。また、事前にマッピングを設定可能な仕組みとなっています。 自動マッピングまずは以下の内容で、インデックスを作成し自動マッピングについて見て行きます。 ブログ記事毎に1つのドキュメントをインデックス各ドキュメントはドキュメントタイプ story にインデックスドキュメントタイプ sto
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く