タグ

2022年10月18日のブックマーク (2件)

  • 【Elasticsearch】1900万点に及ぶ商品データ作成の時間を約67%短縮できた構成と工夫 - MonotaRO Tech Blog

    初めまして、EC基盤グループ サーチチームの壷井です。 モノタロウでは2019年10月頃より新規検索システムの設計・開発を進め、今年の4月頃にECサイト(monotaro.com) 検索ページの裏側の検索システムを従来のSolrからElasticsearchに100%移行*1しました。この移行は将来の商品点数やリクエスト数の増加を見据えたバックエンドの大規模な改修で、ここまで約2年半ほどプロジェクトを進めてきました。今後もECサイトのすべてのページの完全移行に向け引き続き開発・運用を行っていきます。 今回はこのプロジェクトのなかで私が担当してきたElasticsearchへの日々のデータの洗い替え(日次更新と呼んでいます)ワークフローのシステム構成と工夫などについてお話します。 モノタロウの検索システムの紹介 日次更新のシステム構成 処理の流れ ① リアルタイムデータ同期 ② 日次商品デー

    【Elasticsearch】1900万点に及ぶ商品データ作成の時間を約67%短縮できた構成と工夫 - MonotaRO Tech Blog
    mookie
    mookie 2022/10/18
    ぱっと見Solr だと使えないテクニックはなさそうな印象。とはいえelasticの方が高速化するためのツールチェーンが充実しているということかな?
  • トライ木(Trie木) の解説と実装【接頭辞(prefix) を利用したデータ構造】 | アルゴリズムロジック

    文字列の検索 検索時も、文字列を一文字ずつ確認して、Trie 木の頂点を1つずつたどっていきます。もし頂点が存在しなければ、その文字列は Trie 木に挿入されていなかったということになります。 最後の頂点にたどり着いたら、その頂点で終了する文字列があるかを確認する必要があります。例えば、"firework" を挿入したなら、true を返すのは “firework" を検索した時で、"firewo" などを検索した時には false を返してもらうためです。 C++での実装例 ベース 実装方法は様々なものがありますが、頂点の集合を vector などに保存しておくことにして実装していくことにします。C++では、以下のように構造体などで実装すると変更がしやすいです。 template <int char_size, int base> struct Trie { struct Node {

    トライ木(Trie木) の解説と実装【接頭辞(prefix) を利用したデータ構造】 | アルゴリズムロジック
    mookie
    mookie 2022/10/18
    トライ木はretrievalのtrieが由来だったのね