Jakarta ProjectのJavaで書かれたテキスト全文検索エンジン。 Senと組み合わせると日本語もちゃんとハンドリングできる。
読み方に関しては、「るしーん」「るせーぬ」という説もあるが、 http://www.mail-archive.com/lucene-user@jakarta.apache.org/msg04495.html によれば、「Loo-Seen」だそうだ。
検索エンジンチームの加藤宏脩です。 今回は、LIFULLの検索エンジンであるSolrのバージョンアップについて紹介します。 Solrを含むミドルウェアの最新バージョンへのアップデートには多くの工夫と努力が必要です。 この記事では、私たちがLIFULL HOME`Sを支える物件検索エンジンのバージョンアップにどのように取り組んでいるのか、またv9.2.1へのバージョンアップ対応の詳細ついて紹介します
エムスリーエンジニアリンググループ AI・機械学習チームの中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。 エムスリーでは検索エンジンとしてElasticsearchを利用しているのですが、Highlightingのフラグメント機能でとある問題が発生しました。その問題を解決する中でElasticsearch Highlighting の内部的な仕組みを理解することの重要性を改めて感じました。 今回はエムスリーで発生した問題の共有からはじめ、どのように解決したのかはもちろん、Elasticsearch Highlighting の内部的な仕組みも一部紹介し…
はじめまして。キナリノとキナリノモールのサーバーサイドエンジニアをしている加藤です。 キナリノとキナリノモールは自分らしい暮らしを楽しむ人へ、「これが好き」、「これが心地よい」と感じてもらえるお買いもの体験と情報を提供しているサービスです。 そんなサービスなので、情報を提供する記事だったりアイテムの検索が重要になります。今回は新卒2年目の時にトレーナー兼キナリノモール側の導入経験者の先輩社員からサポートを受けつつ私がキナリノの記事検索にElasticsearchを導入した話を紹介していきます。 (2023年9月時点で新卒4年目) 導入の背景 もともとキナリノの記事検索の機能はあったのですが、検…
こんにちは。 リサーチャーの勝又です。 私はレトリバで自然言語処理、とくに要約や文法誤り訂正に関する研究の最新動向の調査・キャッチアップなどを行っております。 今回の記事では、Pyseriniという情報検索の研究で使われるPythonライブラリの簡単な使い方、拡張方法について紹介します。
こんにちは。株式会社ユーザベース NewsPicksでエンジニアをやっております崔(チェ)です。現在は Data / Algorithm チームで検索エンジンの開発を担当しております。 弊社は、約2ヶ月前に検索システムをElastic社のElasticsearch(以下、ES)からマネージドサービスであるAmazon OpenSearch Service(以下、OpenSearch)に移行しました。前回のブログ記事では、移行と同時に検索システムのセキュリティを向上させた話をしました。主に、きめ細かなアクセスコントロール(Fine-Grained Access Control、以下、FGAC)を…
まだプレビューですが Azure Cognitive Search にベクトル検索機能が提供されました。これにより、Azure OpenAI Serivce で Embedding したベクトルを永続化するデータベースとして使うことができます。 今回は下記のリポジトリを参考にしながら、ベクトル検索を試してみました。 github.com ベクトル検索とは Azure OpenAI Service では、Embedding のモデル(text-embedding-ada-002)が提供されていて、会話でやりとりされる自然言語の文字列をベクトル(1536 個の浮動小数点数の高次元配列)に変換するこ…
もしクエリの結果が期待した通りでなかった場合には、Analyzerがどのようにテキストを処理しているのか、一度確認することをお勧めします。 (Elastic Stack実践ガイド[Elasticsearch/Kibana編] Kindle版, p176) Elasticsearchを使った検索の問題にたまたま遭遇し、基本的なことを知っておきたいと思い、Elastic Stack実践ガイド[Elasticsearch/Kibana編] にざっと目を通した。 第1章ではElasticsearchが登場した背景や、ElasticsearchとApache Luceneの関係が解説されていた。またライ…
形態素解析とは 形態素解析とは、文を形態素(言語学で言うところの、意味を持つ最小の言語単位)に分解する作業を指します。 形態素解析の例 日本語の文「今日はいい天気だね」を形態素解析すると、「今日 / は / いい / 天気 / だ / ね」のように分割されます。 形態素解析は自然言語処理(NLP)の一部で、機械翻訳、文章生成、音声認識などの技術で重要な役割を果たします。文を理解するためには、まずその構成要素を理解することが必要で、そのために形態素解析が利用されます。 日本語の形態素解析は特に難易度が高いとされています。英語などとは異なり、日本語は単語間にスペースがない、文法が複雑である、同じ表…
Apache Solr入門の第三章、インデックスの更新について読んでいく。 実験用のコアの作成 書籍のサンプルでもよいのだけど、solrのリポジトリにexampledocsがあるのを発見したので、折角なのでそちらを使ってみる。 参照:solr/solr/example at releases/solr/9.2.1 · apache/solr · GitHub まず、デフォルトで準備されている設定を使ってtechproductという名前のコアを作成する。 solr@91ae230d58a3:/opt/solr-9.2.1$ /opt/solr/bin/solr create_core -c te…
Apache Solr入門の第二章、スキーマに関する部分を読んでいく。 どうでもいい話なのだけど、書籍ではbasic_configsに含まれるスキーマを使って動作を確認しているが、solr 9.2.1だとこの設定は存在しない。 本に書いてある通りやってみるとエラーになる。 solr@91ae230d58a3:/opt/solr-9.2.1$ /opt/solr/bin/solr create_core -c solrbook -d basic_configs Specified configuration directory basic_configs not found! /opt/solr…
第19週:2023/5/8(月)〜2023/5/14(日)のことを書きます。 [つくりおき] [各種タスク] [読書] [ソフトウェア開発] [まとめ]
はじめに 初めまして、株式会社スタンバイのジョブサーチメインというチームで検索エンジン周りの開発・改善に取り組んでいる金正です。 検索エンジンの改善施策の一環としてクエリオートコンプリーションシステムのリプレイスを行いました。 リプレイスに取り組んだ背景やアーキテクチャ、工夫したことなどをご紹介していきます。 クエリオートコンプリーションとは クエリオートコンプリーションとは、ユーザーの入力から始まるキーワードをサジェストする機能になっています。 以下の例では「エンジニ」という文字列から始まるキーワードをサジェストしています。 以降ではクエリオートコンプリーションのことをQAC(Query A…
Overview エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 エムスリーではChatGPTの可能性にいち早く注目して活用を検討している段階ですが、本格的なデータ投入にはまだ懸念もあり、セキュリティチームと検討を進めている段階です。 そんな中で個人または組織のドキュメントのセマンティック検索と取得を可能にするChatGPTプラグイン「ChatGPT Retrieval Plugin」が登場しました。 github.com 情報検索好きとしては黙っていられず、外部公開用のエムスリーAI・機械学習チーム…
副題 問題にぶつかると「正規表現を使えばいい」という人がいる。 そして問題を二つ抱えることになる。 事例:検索エンジンの必要性 webサイトで記事の数が膨大になるにつれて、検索機能の必要性が明らかになる。 分類して設置しておくことも一つの解決策だが、分類が難しい記事もあるし、結局は検索機能が必要になる。 検索には次のような用件が求められる crashで検索すると、crashed,crashes,chrashingなどが出てくる 記事が増加しても処理が重くならない 確かに、オンラインでのテキスト検索は一般的になった。 しかしSQLでテキスト検索を高速かつ正確に行うのは、簡単そうに見えて難しい。 …
WSL 環境に Elasticsearch の環境を整えたくて試してみた。 www.elastic.co こちらのサイトを試します。 1. Docker Image を 持ってくる docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.1 2. Elasticsearch 用の docker network を作成 docker network create elastic 3. docker を実行 docker run --rm --name es01 --net elastic -p 9200:9200 -it doc…
普通につかっていると気にせず済むことは多いですが、たまに検索時のエラーの原因になるmax clause countについてまとめます。 max clause countの何が問題なのか そもそもmax clause countってなに? Boolean Queryに条件をいれすぎなければいいだけでは? max clause countの何が問題なのか max clause countを超えるクエリが生成された場合、検索時にtoo_many_clausesエラーが発生します。