Profile

Tomoko Uchida (打田 智子)

I’m a programmer based in Tokyo. My interests are search systems/algorithms, natural language processing, and machine learning. Like coding with Java, Python. Learning Rust. Work at LegalForce, Inc. Ph.D. student at Univ. Tsukuba (KASYS).

OSS Projects

Publications

  • [改訂第3版]Apache Solr入門」(共著)
  • Software Design 2016年2月号 (連載: Sphinxで始めるドキュメント作成術)
  • Software Design 2017年10月号(特集: Gitのキホン 7章)

Presentations

Contact

tomoko.uchida.1111 at gmail.com

Favorite phrase

Curiosity killed the cat, but satisfaction brought it back.


この記事は,「情報検索:検索エンジンの実装と評価」(Buttcher本) Advent Calendar 2020 20日目のエントリーで,「第7章 動的転置インデックス」についてです。

検索エンジンにインデックスするドキュメントコレクションが,静的(追加/更新/削除が発生しない)であれば,インデックスの保守は不要です。しかし,現実的にそんなケースはごく稀でしょう。多くの場合ドキュメントコレクションは時間とともに変化します。

7章の「動的転置インデックス」では,変化するドキュメントコレクションを検索するための効率的なインデックス保守戦略,アルゴリズムについて解説されています。

ざっくり7章に書かれていること

  • ドキュメント追加時のインデックス保守戦略:インデックスのフラグメンテーションを許さない連続的転置リスト方式と,インデッ …


この記事は,「情報検索:検索エンジンの実装と評価」(Buttcher本) Advent Calendar 2020 13日目のエントリーで,「第6章 インデックス圧縮」についてです。

インデックス圧縮は,永続化された転置インデックス構築への第一歩となります。

とあわせてどうぞ。

ざっくり6章に書かれていること

  • 転置インデックスは,大きく分けてポスティングリストとターム辞書の2つの要素から構成され,データの圧縮方式もそれぞれについて異なる方式が採用される
  • ポスティングリストのサイズと比較すると,ターム辞書のサイズはきわめて小さいため,ポスティン …


日頃,私が Lucene 周りの調査をしたりパッチを書くときに,無意識のうちにやっていることや,これまで見よう見真似で覚えてきたことをダンプしておこうと思います。あまりこういう初心者向けな情報を見かけないので,誰かの役に立てば幸い。。。

この記事を書いている人について

2019年から,縁あって Lucene のコミッターをしています。コミッター以前の時代を含めると,プロジェクトとの関わりは5年くらいです(今もゆっくり勉強中)。

公式リンク集

まずは公式ドキュメンテーションなどをブックマークしておきましょう。


Javame 0.4.0 is out!
Javame 0.4.0 is out!

久し振りの,大型アップデート報告となります 🙌

v0.4.0 をリリースしました。今回はいくつかの Breaking changes と Behavior changes を含むため,マイナーバージョンを 0.4.0 に上げています。アップグレードの際は下記変更点の確認をお願いします。

Breaking changes

Python 2.7 サポートを停止しました。v0.4.0 では Python 3.6 以上のみサポートします。

またこれに伴い,種々のリファクタリングを実施しました。ユーザーサイドでは,Public API に Type Hint を導入したことで,開発時に IDE やエディタの型サジェストを受けられるようになっています。また,古くなってい …


Elasticsearch 7 クラスタを Containers on GCE で立ち上げる: (Managed Instance Group 編))の続きで,今回は GKE (Kubernetes) 上に同じ構成のクラスタを構築します

GCE のシンプルさに比べると学習コストは高めですが,より柔軟な設計・運用ができるので,チームに詳しい人 がいれば(または Elasticsearch 管理者がいちから勉強する余力があれば)チャレンジしてみるのもいいと思います。

k8s や GKE そのものの説明は, 少しググれば良質なブログ記事も多数あるので割愛しますが,複雑なシステムなので初心者は書籍で体系的に学ぶのが近道です。私が参考にしたのは以下3冊です。アフィリエイトリンクではありません :)


Elasticsearch 7 クラスタを Containers on GCE で立ち上げる の続きです。

Instance Template と Managed Instance Group [1] を使うと,ノード障害時の自動復旧(Auto Healing [2])ができるようになります。

Managed Instance Group は,他にも豊富な機能を備えていますが,ざっと概要を押さえるにはこちらのビデオがおすすめです(YouTube に飛びます)。

Set Up, Run and Update Scalable and Highly Available Deployments (Cloud Next ’18)

以下,Instance Group ベースのクラスタ構築手順と,障害発生時の …


Elasticsearch クラスタを GCP 上に構築する機会があり,(ハマったところを中心に)調べたことをまとめておこうと思います。

TL;DR

ここに置いてあるスクリプトを Cloud Shell または手元の環境にコピーして,commands.txt の通りに実行すると,最小構成のクラスタが立ち上がります(そのはずですが,バグっていたら教えてください)。

GCP で Es を運用するときの選択肢

GCP で Elasticsearch クラスタを構築する選択肢はいくつかあります。登場の新しい順に:

  • Elasticsearch Service (managed service) を使う : まだ試していませんが,自前でインフラを運用しないといけない理由がなければ,最有力の選択肢になると思います。
  • GKE (k8s) : Kubernetes に詳しいインフラエンジニア/SRE がチーム内にいれば,選択肢になりそうです …


これは,情報検索・検索エンジンアドベントカレンダー2019 の 13 日目のエントリーです。(12/31 時点でまだ空いていたので,代打で埋めています。元のエントリ予定によると「検索エンジン超入門を書く予定」だったので,たぶん,そんなに外れてはいないかと。)

紹介: Luke とは

Elasticsearch や Solr で検索サービスを開発しているサーチエンジニアのみなさん,日々使い倒している「インデックス」の中身がどうなっているか気にしたことはあるでしょうか。

Elasticsearch や Solr のコアエンジンとして,Apache Lucene が使われていることは(多分)よく知られていますが, Lucene の古い相棒である Luke については,とくにここ数年で Elastic …


この記事は,「情報検索・検索エンジン Advent Calendar 2019」23日目のエントリーです。モノは生煮えですが,背景含めて頑張って説明したいと思うので,ご容赦ください…。

目次

  • Apache Lucene とは
  • Lucene にベクトル検索を実装してみた
  • ベクトル検索版 MoreLikeThis
  • Unsolved issues(積み残し)

雰囲気だけ知りたいという方は,「ベクトル検索版 MoreLikeThis」 のところだけ眺めると良いかもしれません。

Apache Lucene とは

Apache Lucene は,ピュア Java で書かれた,高速・スケーラブルな検索エンジンライブラリです。OSS 検索エンジンとして人気の高い Elasticsearch や Solr のコ …

mocobeta

Search, Texts, Coding

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store