Algolia APIを使用してNode.jsに検索機能を実装する方法

効率的な検索は、ほとんどの最新のWebアプリやサイトの重要な機能です。Algolia APIを使用すると、ユーザーエクスペリエンスを大幅に向上させる強力な検索機能を実装できます。

ブログ、eコマースプラットフォーム、または検索が必要なアプリケーションを構築している場合でも、Node.jsはそれを行うための強力なWebテクノロジーです。Algoliaは、その上に堅牢な検索システムを構築するための優れたプラットフォームを提供します。

Algoliaとは何ですか?

Algoliaは、Webサイトやアプリケーションで効率的で柔軟な検索を実装するためのプラットフォームとツールを提供するホスト型検索エンジンです。Algoliaには、検索と分析の2つのコンポーネントがあります。

Algoliaを使用すると、ユーザーに優れた検索エクスペリエンスを作成し、ツールを使用してアプリケーションから意味のある洞察を分析および抽出できます。

Algoliaは、さまざまな言語で構築されたアプリとのシームレスな統合を可能にする開発者APIとそれをサポートするSDKも提供しています。これにより、低レベルの電力向けのAPIと、一般的な動作をより簡単に開発するためのSDKの両方の利点が得られます。

Algoliaでは、アカウントにサインアップして検索をNode.jsアプリに統合する必要があります。Algolia.comにログインして無料でサインアップしてください。

Algolia開発者API資格情報を取得する方法

Algolia検索を実装するには、プロジェクト用にアプリケーションを作成する必要があります。サインアップすると、Algoliaは最初のアプリケーションという新しいアプリケーションを作成し、それを使用するか、新しいアプリケーションを作成するかを選択できます。

ダッシュボードからAPI資格情報を取得するのは非常に簡単です。APIキーを含むオプションのリストがあります:

APIキーをクリックすると、さまざまな資格情報が表示されたページが表示されます。基本的な統合に必要なのは、アプリケーションID管理者APIキーだけです。

これで、Algoliaアプリケーションを設定したので、それをNode.jsアプリに統合する準備が整いました。

Algoliaで検索機能を実装する

Algoliaは、サーバー側のJavaScriptの最上位の選択肢であり続けるNode.jsを含む、幅広いプログラミング言語のクライアントSDKを提供しています。Node.js SDKを使用すると、JavaScriptでAlgoliaを簡単に使用できます。

algoliasearch npmパッケージをインストールすることから始めます:

npm install algoliasearch

次のステップは、プロジェクトでクライアントを初期化することです。algolia.jsというファイルでalgoliasearchをインポートしてから、API資格情報を使用して新しいクライアントを初期化します:

const Algolia = require("algoliasearch")
const ALGOLIA_APP_ID = 'YOUR_APPLICATION_ID' || process.env.ALGOLIA_APP_ID
const ALGOLIA_ADMIN_KEY = 'YOUR_ADMIN_KEY' || process.env.ALGOLIA_ADMIN_KEY
const algoliaClient = new Algolia(ALGOLIA_APP_ID, ALGOLIA_ADMIN_KEY);

プロジェクトのさらなる操作には、Algoliaクライアントインスタンスを使用します。

Algoliaは、検索可能なデータを格納するために検索インデックスを使用します。検索インデックスは、データの取得を照会できるデータベースのテーブルに似ています。クライアントを初期化した後、データを格納するためのインデックスを作成する必要があります。たとえば、自動車を格納するためのインデックスを作成する方法は次のとおりです:

const carsIndex = algoliaClient.initIndex("cars")

この行は、carsというアプリケーションにインデックスを作成し、その参照をcarsIndex変数に格納します。

次に、インデックスにデータを追加して検索できるようにする必要があります。データは常にオブジェクトの配列として準備し、各オブジェクトにobjectIDプロパティがあることを確認して、一意に識別できるようにする必要があります。

Algoilaインデックスに追加するデータを定義するコードを記述します:

const cars = [
{ objectID: '1', brand: 'Toyota', model: 'Camry', year: '2022', color: 'Silver' },
{ objectID: '2', brand: 'Honda', model: 'Civic', year: '2021', color: 'Red' },
{ objectID: '3', brand: 'Ford', model: 'Mustang', year: '2020', color: 'Black' },
{ objectID: '4', brand: 'Chevrolet', model: 'Corvette', year: '2023', color: 'Yellow' },
{ objectID: '5', brand: 'BMW', model: 'X5', year: '2022', color: 'White' }
];

Algoliaは、saveObjectsメソッドを使用して、特定のインデックスにデータを追加します。この関数は、引数としてオブジェクトのリストを受け取り、プロミスを返します。出力データを使用する必要がある場合は、awaitキーワードを使用できます。

cars配列のすべての車をAlgoliaアプリケーションのcarsIndexに追加する方法は次のとおりです:

carsIndex.saveObjects(cars)

この関数を呼び出すと、Algoliaのアプリケーションダッシュボードに戻り、インデックスまでスクロールダウンします。carsインデックスがあり、それをクリックするとデータが表示されます。

インデックスにデータが格納されたので、Algoliaが提供するさまざまな検索方法を使用して、データを照会できます。

carsインデックスからデータを照会するには、SDKのsearchメソッドを使用し、検索クエリを引数として渡すことができます。この関数は、クエリを正規表現として扱い、インデックス内で一致するすべての結果を返します。

次のコードは、クエリを使用してcarsインデックスを検索し、結果を出力する関数を定義しています。

const searchCar = async (query) => {
const data = await carsIndex.search(query)
console.log(data.hits)
}
searchCar('honda')

このコードを実行すると、プログラムは値がHondaという単語と一致するフィールドを持つ車のオブジェクトを出力します。出力は次のようになります:

オブジェクトの他のプロパティに表示される値を検索することもでき、関数は一致するすべての結果を返します。

Algoliaを使用すると、プロパティを検索可能にするかどうかの設定を行うことができます。たとえば、carsインデックスでbrandmodelのみを検索可能にするには、setSettings関数を使用して、次のコードのように制限を設定できます。

carsIndex.setSettings({
searchableAttributes: ['brand', 'model'],
})

これにより、他のすべてのプロパティが検索不可能になり、検索クエリはbrandmodelプロパティに対してのみ実行されます。プロパティを除外することは、現実世界の製品を構築する際に役立ちます。現実世界の製品では、セキュリティのベストプラクティスを確保し、ユーザーが検索を通じてプライベートデータにアクセスできないようにする必要があります。

Algoliaで効率的な検索機能を構築する

Algoliaは非常に強力なテクノロジーであり、Webアプリケーションに超高速の検索を実装するための最良の選択肢の1つです。また、入力ミスにも寛容であり、検索での入力ミス許容レベルを調整することもできます。

Algoliaで実装すれば、Node.jsアプリケーションの検索エンジンのパフォーマンスを常に信頼できます。現実世界のアプリケーションで検索を実装し、ドキュメントを参照してAlgoliaの詳細を確認できます。