Jakarta ProjectのJavaで書かれたテキスト全文検索エンジン。 Senと組み合わせると日本語もちゃんとハンドリングできる。
読み方に関しては、「るしーん」「るせーぬ」という説もあるが、 http://www.mail-archive.com/lucene-user@jakarta.apache.org/msg04495.html によれば、「Loo-Seen」だそうだ。
エムスリーエンジニアリンググループ AI・機械学習チームの中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。 エムスリーでは検索エンジンとしてElasticsearchを利用しているのですが、Highlightingのフラグメント機能でとある問題が発生しました。その問題を解決する中でElasticsearch Highlighting の内部的な仕組みを理解することの重要性を改めて感じました。 今回はエムスリーで発生した問題の共有からはじめ、どのように解決したのかはもちろん、Elasticsearch Highlighting の内部的な仕組みも一部紹介し…
はじめに 情報システム部の横山です。今回はElasticsearchを利用した機能を本番リリースする直前に発生した、表題のエラーについてご紹介します。このエラーが出るのは一部のアプリケーションだけだとは思いますが、同じエラーが出た人の一助となれば幸いです。 背景 Elasticsearchを利用した全文検索機能のMR(マージリクエスト)をdevelopブランチにマージし、社内で使っているStaging環境でも無事動作確認ができ、別のテスト環境にもデプロイしました。それではお客様にも確認して頂き、それがOKだったら本番にもリリースしよう……という時に、テスト環境からSlackにエラーが通知されま…
イントロ Oracle Cloud Infrastructure(OCI)上で使えるマネージドOpenSearchのサービスであるOCI Search Service with OpenSearchが2022/5/11付でGAになったということで早速触ってみました。 構築~クエリしてみるところまでの詳しいガイドを書こうと思っていたんですが、思っていたよりもめちゃ簡単だったのと、すでにステップ・バイ・ステップの親切なチュートリアル(後述)が用意されていて特に書くことがなくなったのでいくつか補足的なポイントだけまとめておきます。 むかしむかしLuceneとかElasticsearchとか自前で構築…
エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回は社内でPyTerrierを採用して文書検索BatchをPythonで実装したので、PyTerrierの紹介とPyTerrierで日本語検索を実装する方法を紹介します(日本語でPyTerrierを扱う記事は多分初?)。
いやー、まいったね。 入社して三ヶ月が経ちました @metalunk です。この三ヶ月は検索インフラの改善に取り組み、検索速度 10x, インフラコスト 80% 減の成果が出ました。この記事では検索インフラ改善でやったことを説明します。 ところで、検索インフラの改善ができるということは、先人たちが検索機能を作り、PMF してサービスが利用されるようになったおかげです。感謝して改善しましょう。 2021年12月の Stailer の検索 10X は開発不要でネットスーパーアプリを立ち上げられるシステムである Stailer を開発しております。Stailer での購入のうち 35% が検索経由で…
こんにちは。NewsPicksでエンジニアやっております崔(チェ)です。現在は Data / Algorithm チームで検索エンジン開発を担当しております。弊社は、検索エンジンとして Elasticsearch を Amazon EC2 に乗せて構築しておりますが、メンテナンスに消極的だった部分があり、これからはマネージド化や検索精度向上など積極的に取り組んでいきたいと考えております(伸びしろしかない!)。今回は、その中でも色んなタスクのボトルネックだったアルゴリズムを変更した話をしたいと思います。ただ、アルゴリズムの詳細よりもそれの変更のために行ったインフラ的な内容にフォーカスしております…
はじめまして、DevOps チームの中島です。 レアジョブ社の技術部門は、4 月 1 日 から新たにレアジョブテクノロジーズ社としてスタートしました。 新しい組織ではフルリモート可となっており、私も都内から引っ越して田舎暮らしを満喫しています。 さて今回は、 Elasticsearch (Lucene) のコードを読んでいく中で見つけた実装の工夫について紹介したいと思います。 レアジョブのサービスでも Elasticsearch を全文検索に利用している箇所があります。 OSS である Elasticsearch のコードを読み込むことで、高速化や検索精度の向上、その他プロダクトの品質向上に繋…
エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回はLuceneのMore like this(MLT)機能のコードリーディングでMLTの実装を理解して、エムスリーで問題になっていたMLTパフォーマンス問題を解決したお話をします。
Wagtail CMSで日本語の全文検索に対応する方法をまとめます。 実行環境 Ubuntu 18.04 LTS Django 3.2.12 Wagtail 2.15.4 Elasticsearchのインストール www.digitalocean.com $ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - $ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /e…
はじめに こんにちは、検索基盤部 検索研究ブロックの真鍋です。ヤフー株式会社から一部出向していて、主にZOZOTOWNの検索機能へのランキングモデルの導入に従事しています。 本記事では、Elasticsearch上でランキングモデルを扱うための有名なプラグインの仕組みと、同プラグインにZOZOが実装した機能を紹介します。
検索基盤部の内田です。私たちは、約1年前よりヤフー株式会社と協力し、検索機能の改善に取り組んでいます。現在、ZOZOTOWNのおすすめ順検索に用いている、ランキング学習を利用した検索機能も、その取り組みの一部です。 本記事では、Elasticsearch上で、ランキング学習により構築した機械学習モデルを用いた検索を行うためのプラグイン「Elasticsearch Learning to Rank」の簡単な使い方を紹介します。また、このプラグインをZOZOTOWNに導入し、実際に運用して得られた知見をご紹介します。ランキング学習の話題性が世の中で増していますが、検索エンジンを絡めた情報はまだ世の…
"lucene skip list"でWeb検索した。 元記事だけだと難しくて理解できないので解説ブログもあわせて読む。 Not all search systems need to update their contents quickly. In a warehouse inventory system, for example, one daily update to its search index might be acceptable. At Twitter -- where people are constantly looking for the answer to “what…
辞書をベースに処理する日本語 Tokenizer のいくつかをコードを書いて実行してみました。 (a) Lucene Kuromoji (b) atilika Kuromoji (c) Sudachi (d) Kuromoji.js (e) Fugashi (f) Kagome (g) Lindera 今回は以下の文を処理して分割された単語と品詞を出力します。 処理対象文 WebAssemblyがサーバーレス分野へ大きな影響を与えるだろうと答えた回答者は全体の56%だった。 システム辞書だけを使用し、分割モードを指定する場合は固有名詞などをそのままにする(細かく分割しない)モードを選ぶ事にしま…
indexing - Why does Lucene use arrays instead of hash tables for its inverted index? - Stack Overflowを読んでいて見つけた。 3. Storage and Retrieval - Designing Data-Intensive Applications [Book]からも参照されている。スライドは下記。 What is in a Lucene index? from lucenerevolution Lucene can use severe indexes in a single query…
これは、なにをしたくて書いたもの? ElasticsearchのJavaScriptクライアントのドキュメントを見ると、TypeScriptのサポートがありそうだったので こちらを使ってElasticsearchにアクセスするコードを書いてみようかなと。 TypeScript support | Elasticsearch JavaScript Client [7.16] | Elastic Elasticsearch JavaScriptクライアント × TypeScript ElasticsearchのJavaScriptクライアントに関するドキュメントはこちら。 Elasticsearc…
この記事は KMC advent calendar 2021 9日目の記事です。 昨日の記事は Elasticsearch: N-gram tokenizer と N-gram token filter の挙動の違い - Unyablog. でした。今日*1も Elasticsearch の話をします。 本題 サークル内で開発しているドキュメント検索ツール(Heineken)では Elasticsearch を内部で用いている。 この Elasticsearch を 5.x から 7.x に上げるにあたって、全文検索時に使っていた split_on_whitespace と auto_gene…