eコマースプラットフォームのスケールが継続的に拡大することで、ユーザーが直面する製品の数と種類がますます豊富になりつつあります。ユーザーが必要な製品をより効率的に配置できるようにするために、製品の属性フィルタリングと並べ替え機能が重要になっています。この記事では、プラットフォームの検索エクスペリエンスを改善するために、SphinxとPHPを使用して高速応答の検索システムを構築する方法を共有します。
Sphinxは、非常に高い検索パフォーマンスを備えたオープンソースのフルテキスト検索エンジンです。複数の検索モードをサポートし、大規模なデータの高速クエリに適しており、オンサイト検索、eコマースシステム、ログ分析、その他のシナリオで広く使用されています。
eコマースプラットフォームでは、製品には通常、ブランド、色、サイズなどの複数の属性があります。Sphinxのフィルタリング機能を介して、ユーザーが需要のあるターゲット製品をフィルタリングできるようにすることができます。以下は、SphinxClientクラスを使用してPHPと組み合わせてブランドフィルタリングを実装する方法を示すサンプルコードです。
$cl = new SphinxClient;
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$cl->SetFilter('brand', array(1)); // ブランドフィルタリング基準を設定します,ブランドを仮定しますIDのために1
$res = $cl->Query("iphone");
if ($res === false) {
echo "検索に失敗しました!";
} else {
echo "正常に検索します,合計で一致します" . count($res['matches']) . "製品。";
foreach ($res['matches'] as $match) {
echo "商品ID:" . $match['id'] . ",製品名:" . $match['title'] . "<br>";
}
}
属性フィルターを設定することにより、検索結果をより正確にし、ユーザーのパーソナライズされたニーズを満たすことができます。
フィルタリングに加えて、ユーザーは通常、価格、販売、評価などの寸法で検索結果を並べ替えたいと考えています。 Sphinxは柔軟なソート設定をサポートしており、次の例は、ユーザーの選択に基づいてソート条件を動的に設定することを示しています。
$cl = new SphinxClient;
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$sort = "@relevance DESC"; // デフォルトで依存関係によってソートします
// ユーザーの選択に応じて、ソートメソッドを動的に設定します
if ($userSort == 'price') {
$sort .= ", price ASC";
} elseif ($userSort == 'sales') {
$sort .= ", sales DESC";
} elseif ($userSort == 'rating') {
$sort .= ", rating DESC";
}
$cl->SetSortMode(SPH_SORT_EXTENDED, $sort);
$res = $cl->Query("iphone");
if ($res === false) {
echo "検索に失敗しました!";
} else {
echo "正常に検索します,合計で一致します" . count($res['matches']) . "製品。";
foreach ($res['matches'] as $match) {
echo "商品ID:" . $match['id'] . ",製品名:" . $match['title'] . "<br>";
}
}
この方法は、検索の柔軟性を向上させるだけでなく、ユーザーのブラウジングエクスペリエンスを大幅に最適化します。
SphinxとPHPを組み合わせることで、eコマースプラットフォーム用の効率的でスケーラブルな検索エンジンシステムを構築できます。多次元属性フィルタリングであろうと柔軟な結果ソートであろうと、大規模な製品間でニーズを正確に位置付けるというユーザーの目標を達成できます。この記事の実用的な例が、電子商取引プラットフォームで検索機能を開発する際に貴重な参照を提供できることを願っています。