検索関数は、最新のWebアプリケーションで重要な役割を果たします。データ量が急増すると、ユーザーは検索結果の精度と関連性についてより高い要件を提案しています。高性能検索エクスペリエンスを実現するために、開発者は通常、効率的なフルテキスト検索エンジンを統合することを選択します。 Manticore Searchは、高速かつ正確な検索のために設計されたオープンソースソリューションです。この記事では、PHPとManticore検索を使用して強力な検索機能を構築する方法について説明します。
Manticore Searchは、多くの機能を強化するSphinxベースのブランチプロジェクトです。フルテキスト検索、ファジーマッチング、カスタムスコアリングメカニズム、JSON形式のストレージなどをサポートし、eコマースプラットフォーム、コンテンツ管理システム、エンタープライズ検索などのさまざまなシナリオに適しています。リッチAPIインターフェイスを提供することにより、Manticore SearchはPHPアプリケーションと簡単に統合して、柔軟で効率的な検索ソリューションを構築できます。
Manticore Searchの公式Webサイトにアクセスして、公式ドキュメントに従ってインストールと構成を完了することにより、最新バージョンをダウンロードできます。インストールが完了したら、サービスが正常に実行されていることを確認してください。
検索関数を構築する最初のステップは、インデックスを作成することです。インデックスは、構造化された情報を保存するために使用されるコアコンポーネントです。インデックスを作成するためのPHPサンプルコードは次のとおりです。
<?php
$index = new ManticoreSearchIndex($client, 'products');
$index->create([
'product_id' => ['type' => 'integer', 'indexed' => true, 'docvalues' => true],
'name' => ['type' => 'text', 'indexed' => true, 'tokenized' => true],
'price' => ['type' => 'float'],
]);
?>
上記のコードは、製品ID、名前、価格の3つのフィールドを含む「製品」と呼ばれるインデックスを作成します。ビジネスのニーズに応じて、より多くのフィールドを追加できます。
ドキュメントはインデックス内の特定のデータ項目であり、各ドキュメントは検索オブジェクトを表します。次のコードは、製品ドキュメントをインデックスに追加する方法を示しています。
<?php
$document = new ManticoreSearchDocument($index);
$document->setId(1);
$document->setFields([
'product_id' => 1,
'name' => 'iPhone 11',
'price' => 999.99,
]);
$index->addDocuments([$document]);
?>
好きなだけドキュメントを追加でき、各ドキュメントのフィールドはインデックス定義と一致する必要があります。
ドキュメントを追加した後、検索クエリを実行できます。次のPHPの例は、単純なキーワード検索プロセスを示しています。
<?php
$search = new ManticoreSearchSearch($client, ['index' => 'products']);
$result = $search->search('iPhone');
foreach ($result['hits'] as $hit) {
echo $hit['product_id'] . ': ' . $hit['name'] . ' - ' . $hit['price'] . "\n";
}
?>
このコードは、キーワード「iPhone」を含むすべての製品情報を返し、形式で出力します。価格帯、ページング、ソートなどの検索基準を拡張することもできます。
検索品質をさらに向上させるために、Manticore Searchは、結果の相関を最適化するためのさまざまなメカニズムを提供します。 1つの方法は、フィールドの重みを設定することにより、ソートアルゴリズムに影響を与えることです。
<?php
$index->update([
'base' => 'products',
'expr' => 'rank_expr',
'ranker' => 'expr',
]);
?>
製品名の重みを説明情報よりも高くするなど、ビジネスロジックに基づいてランク式をカスタマイズできます。さらに、Manticoreは、Booleanクエリ、フレーズ検索、類似性クエリなどの高度な機能もサポートしており、複雑な検索ロジックを構築するための柔軟なツールを提供します。
PHPとManticore検索を組み合わせることで、開発者は強力でパフォーマンスのある検索サービスを迅速に構築できます。この記事では、検索エンジンのインストール、インデックスの作成、ドキュメントの追加、クエリの実行、関連性の調整などの重要な手順について説明します。実際のアプリケーションでは、特定のビジネスシナリオに基づいた検索戦略の微調整により、ユーザーの検索エクスペリエンスが大幅に向上します。