PrincipleworksJavaScriptがお使いのブラウザで無効になっているようです。このサイトをご覧いただくにはJavaScriptを有効にしていただく必要があります。×カートの中には何もありません。2018の11日目です。Sourceでも2.3からはElasticsearchが利用できるようになりました。今回はElasticsearchを利用するメリットと、導入方法について解説したいと思います。Magento2系と商品キーワード検索Magento1系では、Magentoの商品キーワード検索機能はMySQLのLikeまたは全文検索を使用してきました。Like検索の場合は部分一致検索なので、データベースのインデックスがあまり有効に機能せず、パフォーマンス的に厳しい側面がありました。Solrを使用する実装が有償版やサードパーティ製エクステンションで提供されてきましたが、古いバージョンのSolrのインデックス更新があまり高速ではないこともあり、10万点以上商品があるサイトの場合はなかなか厳しいところがありました。SolrやElasticsearchの連携が利用できるようになりました。古いMySQLでは、全文検索といえばMyISAM型テーブルに対するもので、InnoDB型テーブルを対象としたものではありませんでした。最近のMySQLはInnoDB型テーブルであっても、フルテキストインデックスが作成できるようになっているため、全文検索クエリを発行して検索をかけることが可能です。ところが、往々にしてあることなのですが、この手のフルテキストインデックスは日本語のような膠着語に対してはなかなか有効に機能しないことが多々あります。日本語の場合、単語の区切りがあまり明確ではなかったり、1文字や2文字の単語も非常に多いことから、西ヨーロッパ諸語のような半角スペースを区切りとした文章の評価は効果がありません。そのため、Magento2系を導入された方から「商品検索がヒットしない」という声をよく頂いてきました。MySQL5.7以降で使えるngramパーサーを使用した全文検索Magentoに一切手を入れずに対処する方法として、MySQL5.7から実用レベルになった、InnoDB型テーブルにおけるフルテキストインデックスでngramパーサーを使う方法があります。インデックスを定義する際に以下のように記述することで、インデックス対象の列に格納されているデータを所定の文字数で分割してインデックス化するものです。ngram;この方法を利用すると、難しいカスタマイズをしなくとも検索の精度がある程度向上します。実は以下の問題点を抱えることになります。1文字の単語にはヒットしない商品更新時などに発生するインデックス更新コストが増大し、場合によってはデッドロックする商品検索インデックスをコマンドから再構築すると、手動でインデックスを作り直す必要がある実際のところ、この方式は実際のサイトで試してみましたが、全くといっていいほどお薦めはできません。2.2まではサードパーティ製のElasticsearch連携や、商品検索専門の外部サービスを利用する必要性がありました。Source版でもElasticsearch連携が標準搭載されるようになりました。Commerceに搭載されてきたものと同じで、2.3からは両エディションで共通した実装が採用されています。Serviceのようなマネージドサービスを利用して、Elasticsearchが動く環境を用意する必要があります。この部分はElasticsearchの公式ドキュメントや、各種マネージドサービスのマニュアルを見ていただくとして、要はElasticsearchがMagentoの動作しているWebサーバーからhttp/httpsでアクセスできる場所でセットアップされていればOKです。次に、Magentoの管理画面にあるカタログの設定画面で、Elasticsearchサーバーに対する接続情報を設定します。接続情報についてはサーバー管理者やサービス提供事業者に確認してください。設定ができ、接続が確認できたら、検索インデックスを再構築します。基本はたったこれだけです。Teamと協力して、Elasticsearch連携を日本語向けに調整する改良を進めています。標準状態でもMySQLの全文検索よりは良好に動作するのですが、さらに精度を向上させることを目指しています。開始いたしましたので、ご検討いただければ幸いです。