ブックマーク / po3rin.com (6)

  • 検索エンジンの数値インデックスを支える Bkd-Tree - 好奇心に殺される。

    Computer Science / Algorithm 検索エンジンの数値インデックスを支える Bkd-Tree Elasticsearchの数値データインデックスに使われるBkd-Treeというアルゴリズムを論文を読みながらまとめました。 Overview こんにちは pon です。Elasticsearch & Lucene 輪読会を弊社で毎週開催しているのですが、そこでBkd-Treeというアルゴリズムに行き着きました。そこでBkd-Treeの論文を読んでみたので、まとめたものを共有しようと思います。 論文はこちら Bkd-Tree: A Dynamic Scalable kd-Tree LuceneでのBkd-Tree Bkd-TreeはLucene6から導入されたようで下記のようにスペース効率、パフォーマンスが大幅に改善されたようです。 以下こちらのElasticsearch公

    検索エンジンの数値インデックスを支える Bkd-Tree - 好奇心に殺される。
  • go-plugin × gRPC で自作Goツールにプラグイン機構を実装する方法 - 好奇心に殺される。

    Go go-plugin × gRPC で自作Goツールにプラグイン機構を実装する方法 go-pluginパッケージを使ってgRPCプラグイン機構を提供する方法を調べたので紹介します。 Overview こんにちは pon です。これはGo 2 Advent Calendar 2020 の15日目の記事です。 自作ツールに素敵なプラグイン機構を仕込みたいことありますよね。今回はTerraformやPackerなどでプラグイン機構をして利用されているパッケージであるhashicorp/go-pluginの使い方を紹介し、実際にどのように実装するかをコードをあげて紹介します。 go-pluginとは go-pluginは、RPCを介したGoのプラグインシステムです。 TerraformなどHashicorpの様々なOSSの内部でも使われているので実績は抜群です。RPCを介すると言いますがローカ

    go-plugin × gRPC で自作Goツールにプラグイン機構を実装する方法 - 好奇心に殺される。
  • 読んで理解する全文検索 (IndexWriter, DWPT, IndexingChain 導入編) - 好奇心に殺される。

    Lucene / Java 読んで理解する全文検索 (IndexWriter, DWPT, IndexingChain 導入編) Lucene IndexWriter の内部を冒険します。 Overview こんにちは pon です。 全文検索エンジンは男の夢です。故に全文検索ライブラリであるLuceneの内部を理解するためにIndexWriterの実装をコードで追います。IndexWriterを追うことで内部のインデックスのデータ構造などを学べるはずです。まずは第一弾として 「DWPT, IndexingChain 導入編」 を書きました。 Luceneに触れるのが初めての人は私の過去ブログがおすすめです。 Elasticsearchを理解するためにLuceneを使った検索エンジン構築に入門してみた IndexWriter IndexWriterは前回のブログで説明したように下記のアーキ

    読んで理解する全文検索 (IndexWriter, DWPT, IndexingChain 導入編) - 好奇心に殺される。
  • Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) - 好奇心に殺される。

    Rust Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) 実務で使うツールをRustでサラッと実装したので、僕が踏んだ実装方法を紹介します。 Overview こんにちは pon です。これはRust Advent Calendar 2020 の記事です。 初心者がHTTPクライアントCLIをRustで書いて、実務で利用したので、実装方法を紹介します(ほとんどライブラリの紹介になる気がするが...)。Rustで何か作ってみたい人の足がかりになると思います。 作ったやつ 社内のAPIを叩くので実際のコードは公開できませんが、どんな感じのツールかを共有します。テキストからキーワード一覧を取得して、そのキーワードごとに検索エンジンが何件返すかを調べる簡単なツールです。 これを作るのに使ったライブラリを紹介します。これらを使うとRustでも簡単にHTTPクライアン

    Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) - 好奇心に殺される。
  • Goのインターフェース抽象度を美しく保つ為の思考 - 好奇心に殺される。

    Go Goのインターフェース抽象度を美しく保つ為の思考 Goで抽象化を適切に、そして美しく保つ為の自分の考えやTipsを紹介します。 Overview とある場面でGoのinterfaceが持つ振る舞いの抽象度について議論があり、今回はそれをアウトプットしておきます。Go初心者でinterfaceを使った設計に苦手意識を持つ人向けです。 目次 今回の目次です!下記について自分の考えをお話しします! 振る舞いの抽象化の度合いを意識する 抽象度をどこまであげるか 引数や返り値から発生する「抽象化の漏れ」 抽象度をあげる為の統合 Getter/Setterと抽象度 それではいってみましょう! 振る舞いの抽象化の度合いを意識する 振る舞いをinterfaceとして定義していくのがGoの抽象化ですが、そもそも 抽象化は度合いのある概念です 。この度合いを意識しないと適切なinterfaceの設計は困

    Goのインターフェース抽象度を美しく保つ為の思考 - 好奇心に殺される。
  • Elasticsearchを理解するためにLuceneを使った検索エンジン構築に入門してみた - 好奇心に殺される。

    Java / Lucene / Elasticsearch Elasticsearchを理解するためにLuceneを使った検索エンジン構築に入門してみた Elasticsearchを理解する為にLuceneに入門しました。今回は簡単な検索エンジンを構築します Overview こんにちは pon です。Elasticsearchで思わぬ挙動にでくわすと、Javaすらやったことのない僕に出来ることはネットの海を彷徨うだけでした。これはよくないと思い、Elasticsearchの仕組みをある程度理解できるように Lucene に入門しました。今回はLuceneのパッケージを利用して簡単な検索エンジンを動かしてみようと思います。Elasticsearch内部でどのようにLuceneを使っているのか知りたい人は必見です。 Lucene とは https://lucene.apache.org/ E

    Elasticsearchを理解するためにLuceneを使った検索エンジン構築に入門してみた - 好奇心に殺される。
  • 1