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 の内部的な仕組みも一部紹介し…
初めまして、株式会社ecbeing 製品開発本部 マイクロサービス開発統括部に2023年新卒で入社した高橋祐之介(のすけ)です。配属から今までクラウドサービスのPoCやLINEミニアプリの開発に携わってきました。そして、昨年10月からは当社の検索エンジン「Lightning Search(ライトニングサーチ)」の開発にも参加しています。 Lightning Search内で使用されている技術、「Azure AI Search」に関する学習を行いましたので、今回はAzure AI Searchと言うサービスについて、学習したことや実際の実行結果を本ブログで共有します。 目次 Azure AI S…
これは、なにをしたくて書いたもの? Infinispan 15.0.0.Finalのリリースブログの中に、Marshallingの改善がトピックとしてありました。 Infinispan 15.0.0.Final ProtoStreamに関するものになるのですが、今回はこちらを見ていこうと思います。 ProtoStream 5.0での変更 Infinispanでは、Marshalling(いわゆるシリアライズ)の選択肢としてProtocol Buffersがあります。他にも選択肢がありますが、 まずはProtocol Buffersを使うのが推奨です。 そしてオブジェクトをProtocol Bu…
こんにちは、CCCMKホールディングスTECH LABの井上です。 前回の記事の続きになります。 AI SearchのSharePointからのインデックス作成をやってみました - CCCMKホールディングス TECH Labの Tech Blog 前回、Sharepointをデータソースにしてベクトル化したときにメタデータが取得できないというところで終了したのですが、できました。 使ったAPIのリクエスト内容は以下のものになります。 データソース作成 POST https://{{search_service}}.search.windows.net/datasources?api-vers…
LinuCエヴァンジェリスト・Open Source Summit Japanボランティアリーダーの鯨井貴博@opensourcetechです。 はじめに 今回は、Ubuntu Server 22.04 LTS(VM)にメールサーバを構築します。 ソフトウェアインストール postfix(SMTP)とdovecot(POP/IMAP)をインストールします。 dovecotが、dovecot-core・dovecot-imapd・dovecot-pop3dと3つに分かれている点がRPM系と違いますね! ubuntu@ubuntu:~$ sudo apt update [sudo] passwor…
前回のブログ記事では、Azure AI Searchのシノニム機能について機能概要などを紹介しました。 blog.jbs.co.jp 今回はREST APIを使用して、実際にシノニム機能を操作して、その検索挙動を確認します。 はじめに シノニムマップ割り当て済みのインデックスを作成する インデックスを用意する REST APIでシノニムマップを作成する フィールドに対してシノニムマップを割り当てる 検索を実行する 検索方法 検索結果と考察 クエリNo.1:America クエリNo.2:USA クエリNo.3:USA America クエリNo.4:USA + America クエリNo.5:…
RAG(Retrieval-Augmented Generation; 取得拡張生成)を利用したチャットシステム等を構築するにあたり、検索サービスであるAzure AI Searchへの需要が高まっています。 ドキュメント検索方法には、テキスト検索、ベクター検索、ハイブリッド検索などの様々なパターンがありますが、今回はテキスト検索の精度向上に寄与する「シノニム」機能に焦点を当てます。 この記事では、Azure AI Searchのシノニムの基本的な機能や検索処理の流れについて解説します。 Azure AI Searchのシノニム 用語やコンポーネントの整理 ルールの種類 同義性規則(Equiv…
こんにちは。XI 本部AIトランスフォーメーションセンター所属の山田です。 先日、部内の勉強会でAzure AI Searchについて紹介したので、テックブログでもその内容を紹介したいと思います。 Azure AI Searchとは? Azure AI Searchに保存されるデータに関する用語と概念 Azure AI Searchのスケーラビリティに関する用語と概念 Azure AI Searchでサポートされる検索の仕組み 全文検索について Azure AI Searchのアナライザー ベクトル検索について ベクトルの近傍検索アルゴリズム ハイブリッド検索 検索インデックスのスキーマ設計 …
LuceneはJavaインターフェイスなのに対して、SolrはJSON over HTTP ドキュメントの重みづけはLucene/Solr V6からOkapi BM25 スキーマは、フィールドとフィールドタイプ(数値、文字列、日付)を指定する。フィールドは非テキスト系とテキスト系に分かれる。非テキスト系には、製品名、ジャンルなど単語分割が必要ない文字列が含まれる。テキスト系はAnalyzerの指定が必要。 Analyserは、文字フィルタ、トークナイザ、トークンフィルタを指定する。 文字フィルター:例えば、文字フィルタで半角カタカナを全角カタカナに変換してからトークナイザに渡す。Mapping…
Elastic Search は全文検索ソフトとして2010年に登場した。索引検索を行う。 用語 転置インデックスは、単語と単語が出現する文書の組み合わせで作成されるインデックスのこと。 検索ライブラリー:インデクサとサーチャの機能を提供する。Apache Lucene(JAVA) 検索サーバレイヤ:Apache Solr、Elasticsearch。REST APIのインターフェイスを持つ。いずれも検索ライブラリLuceneを呼び出す。 検索システムレイヤ:クローラーやWebユーザーインターフェイスを持つ。エンタープライズサーチ製品。オープンソースではnamazu、Fessがある。 Elas…
Elasticsearch + Logstash + kafka + Filebeatでログ転送し、Kibanaで見る 有名どころのコンポーネントを用いてログを参照できるようにします。 Elasticsearchの構築 apt-transport-httpsをインストールします。 apt-get install apt-transport-https Elasticsearchの PGP Keyを追加します。 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/sh…
PythonからAzure AI Searchのシノニムマップを作成し、クエリ拡張をして、その効果を日本語の質問応答データセットで確認してみました。昔からある機能で、とくに何か新しいことをしているわけでもないのですが、使いそうな機会があったので試してみました。 本記事の構成は以下のとおりです。 シノニムマップ シノニムマップの作成 インデックスの作成 実験設定 実験結果 参考資料
これは、なにをしたくて書いたもの? Elasticsearch 8を、シングルノードで簡単に使えるようにセットアップしたいなということで。 以前、少しやってちょっとハマったので、今回はちゃんと見てまとめておくことにしました。 やりたいことは、以下の条件のElasticsearchをセットアップすることです。 シングルノード 外部から接続可能 HTTPでアクセス可能 環境 今回の環境は、こちら。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS…
良いお年をと言ったな、あれは嘘だ。ということで後編です。 前回でいい感じにデータが貯まったので、もうちょい遊んでみようと思ったのであった。 yohfee.hatenadiary.org ちょうど.NET InteractiveをF#で遊んでみたかったんだよな。 前回ので形態素解析済みのデータはあるけど、.NETでもKuromojiでできるとのことなんでついでに。 Plotly.NETではいろんなチャートを出せるようだけど、結局今回はテーブルしか使わなかった。 #r "nuget: Lucene.Net.Analysis.Kuromoji, 4.8.0-beta00016" #r "nuget:…
Contract One の開発チームで EM をやっている石畑です。Contract One は「契約データベースから、収益を最大化する」をタグラインに、契約業務や管理の効率化だけでなく、契約データをビジネスに活かすためにさまざまな機能開発を行っています。 その中で最近より検索機能の向上が重要になって来ているので、全文検索エンジンである Elasticsearch について調べてまとめました。Elasticsearch をざっくり把握したい人に役立つブログになれば嬉しいです。 なお、本記事は Sansan Advent Calendar 2023 25日目の記事です。
検索エンジンをVespaへ移行しています こんにちは、スタンバイで検索周りの開発を担当している鷹取です。 今回はスタンバイで利用している検索エンジンをVespaへ移行している話を紹介します。 検索エンジン移行の背景 Stanby Tech Blogのスタンバイ2+1年の軌跡の記事で説明されている通り、 スタンバイでは、主に求人検索機能を提供していますが、その中でもオーガニック(無料掲載)と広告(有料掲載)という2種類の検索が存在します。 この2種類の検索ではそれぞれで異なる検索エンジンを使用しています。 オーガニック検索: Yahoo! ABYSSという検索プラットフォーム 広告検索: Ela…