From 6a809699c53e4e9069c37637eb4e8611c547dc29 Mon Sep 17 00:00:00 2001 From: "tubone(Yu Otsubo)" Date: Wed, 4 Dec 2024 09:24:15 +0900 Subject: [PATCH] =?UTF-8?q?Update=202024-11-29-=E8=B2=A7=E4=B9=8F=E4=BC=81?= =?UTF-8?q?=E6=A5=AD=E5=90=8D=E3=82=B5=E3=82=B8=E3=82=A7=E3=82=B9=E3=83=88?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E9=96=8B=E7=99=BA.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...37\350\203\275\351\226\213\347\231\272.md" | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git "a/src/content/2024-11-29-\350\262\247\344\271\217\344\274\201\346\245\255\345\220\215\343\202\265\343\202\270\343\202\247\343\202\271\343\203\210\346\251\237\350\203\275\351\226\213\347\231\272.md" "b/src/content/2024-11-29-\350\262\247\344\271\217\344\274\201\346\245\255\345\220\215\343\202\265\343\202\270\343\202\247\343\202\271\343\203\210\346\251\237\350\203\275\351\226\213\347\231\272.md" index 96a84406a0..d202377b6d 100644 --- "a/src/content/2024-11-29-\350\262\247\344\271\217\344\274\201\346\245\255\345\220\215\343\202\265\343\202\270\343\202\247\343\202\271\343\203\210\346\251\237\350\203\275\351\226\213\347\231\272.md" +++ "b/src/content/2024-11-29-\350\262\247\344\271\217\344\274\201\346\245\255\345\220\215\343\202\265\343\202\270\343\202\247\343\202\271\343\203\210\346\251\237\350\203\275\351\226\213\347\231\272.md" @@ -19,7 +19,7 @@ templateKey: blog-post ## はじめに -おはようございます!!こんにちは!! +おはようございます!!こんにちは!! この記事は**AWS re:invent開催のラスベガス**からお送りしてますが、一切AWS関係ないです....!!! ![](https://i.imgur.com/wuH4vwW.jpg) @@ -52,7 +52,7 @@ templateKey: blog-post 企業名に関しては、国税庁が提供する[法人番号システム Web-API](https://www.houjin-bangou.nta.go.jp/pc/webapi/riyokiyaku.html)というものがあります。 -商用利用についても +商用利用についても、 「このサービスは、国税庁法人番号システムWeb-API機能を利用して取得した情報をもとに作成しているが、サービスの内容は国税庁によって保証されたものではない」 @@ -66,7 +66,7 @@ templateKey: blog-post まずはサジェスト機能の要件を叶えるためのアーキテクチャを考えていきます。 -例えば[Algolia](https://www.algolia.com/)だと全文検索エンジンに入力に対して**フロントエンドから直接細かく全文検索を実行し**結果をハイライトする形でサービスを構築することが推奨されています。(バックエンドを経由しない) +例えば[Algolia](https://www.algolia.com/)だと全文検索エンジンに入力に対して**フロントエンドから直接細かく全文検索し**結果をハイライトする形でサービスを構築することが推奨されています。(バックエンドを経由しない) 直接APIをフロントエンドから叩くことでバックエンドを経由しないことによるパフォーマンスの向上のほか専用のJSライブラリによるInstantSearch, Autocompleteの実装で開発速度の向上が図れるとのことです。 @@ -84,7 +84,7 @@ templateKey: blog-post ## データソースはどうする? -上記にもちらっと記載しましたが、世の中には[法人番号システム Web-API](https://www.houjin-bangou.nta.go.jp/pc/webapi/riyokiyaku.html)という便利なAPIがありますが、この元ネタになっている情報をCSVやXMLでダウンロードすることができます。[基本3情報ダウンロード](https://www.houjin-bangou.nta.go.jp/download/) +上記にもちらっと記載しましたが、世の中には[法人番号システム Web-API](https://www.houjin-bangou.nta.go.jp/pc/webapi/riyokiyaku.html)という便利なAPIがありますが、この元ネタになっている情報をCSVやXMLでダウンロードできます。[基本3情報ダウンロード](https://www.houjin-bangou.nta.go.jp/download/) 今回の記事では詳しく取り上げませんがこのCSVやXMLには企業名のほか、そのふりがなや住所、倒産や統合・社名変更に関する情報なども含まれております。 @@ -160,7 +160,7 @@ import debounce from "lodash/debounce"; 御名答。そのとおりです。**"お金があれば"。"お金があれば"。"お金があれば"。** -インデックス量やワークロードにかかる負荷など前提条件は様々ですが、今回の企業名を検索する用途で使うとインデックス量がFargateのエフェメラルストレージ20GBに収まるため、**FargateやFargate spot**を使うことで圧倒的に安く作れます。 +インデックス量やワークロードにかかる負荷など前提条件はさまざまですが、今回の企業名を検索する用途で使うとインデックス量がFargateのエフェメラルストレージ20GBに収まるため、**FargateやFargate spot**を使うことで圧倒的に安く作れます。 もちろん実運用だと可用性を考え冗長な構成を取ったりする必要はあるので**あくまでもケースバイケース**ということはご承知いただくのと、お金があるのであれば運用コストを考えてOpenSearchなどのマネージドサービスに乗っかったほうが100%よいとは思います。 @@ -302,7 +302,7 @@ docker run -d \ ### スロークエリ監視 -それでは早速インデックスを作って行きましょう! +それでは早速インデックスを作っていきましょう! まず、リソース面を削りに削っていくためできる限り小さなコンテナにElasticsearchを展開していくため**スロークエリを監視できるように**しておきましょう。 @@ -542,7 +542,7 @@ response = es.indices.put_settings(index="companies", body=settings_body) ## 検索クエリ -検索クエリでは、様々な形式で登録したフィールドに対してマルチマッチで検索を実施します。 +検索クエリでは、さまざまな形式で登録したフィールドに対してマルチマッチで検索を実施します。 - 検索対象 @@ -550,7 +550,7 @@ response = es.indices.put_settings(index="companies", body=settings_body) - company_name.ngram (N-gram解析された会社名) - hiragana_name (ひらがな) -の3つのフィールドに対して検索を行います。 +の3つのフィールドに対して検索します。 ### 検索手法の組み合わせ @@ -576,12 +576,12 @@ company_name.keywordに対する前方一致検索を追加し、完全一致に これにより、より適切な検索結果の順序付けを実現しています。 -こうすることでより体験のよいサジェストを提供することができるはずです。 +こうすることでより体験のよいサジェストを提供できるはずです。 ## おわりに -本記事では、限られたリソースとコストの中で企業名サジェスト機能を実装する方法について、小さい小さいコンテナを使った実装とそのインデックス例を取り上げました。 +本記事では、限られたリソースとコストのなかで企業名サジェスト機能を実装する方法について、小さい小さいコンテナを使った実装とそのインデックス例を取り上げました。 貧乏開発が必ずしもいいとは限りませんが、常にコスト意識を持つことの重要性を感じることができました。