情報の量が急速に増加すると、検索結果の精度に関するユーザーの要件が常に増加しています。従来の検索エンジンは、多次元の正確な検索のニーズを満たすのが難しいため、柔軟で効率的な検索フィルタリング機能を構築することが特に重要です。
Manticore Searchは、高速スケーリングと複雑なクエリをサポートするオープンソースの高性能フルテキスト検索エンジンです。その後の開発と使用のために、公式チャンネルからManticore検索をダウンロードしてインストールできます。
インデックス作成は、フルテキスト検索の基礎です。次の例は、PHPを介してタイトル、コンテンツ、および分類フィールドを含むインデックスを作成する方法を示しています。
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchIndex;
use ManticoresearchExceptionsRuntimeException;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
try {
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$index = new Index($client);
$index->create([
'index' => 'myindex',
'type' => 'mytype',
'fields' => [
'title' => ['type' => 'text'],
'content' => ['type' => 'text'],
'category' => ['type' => 'text']
]
]);
echo "Index created successfully.";
} catch (RuntimeException $e) {
echo $e->getMessage();
}
?>
上記のコードは、必要なテキストフィールドを含む「MyIndex」という名前のインデックスを正常に作成し、実際のニーズに応じてフィールド構造を調整できます。
インデックスが作成された後、次のコード例を使用して、キーワードのフルテキスト検索を実装し、タイトル、コンテンツ、分類フィールドのマッチングをサポートできます。
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addShould($query->match('title', 'keyword'));
$boolQuery->addShould($query->match('content', 'keyword'));
$boolQuery->addShould($query->match('category', 'keyword'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
このコードは、キーワード「キーワード」の検索を実行し、多様なクエリのニーズを満たすために一致する複数のフィールドをカバーします。
フルテキスト検索に基づいて、フィルター条件を追加するとさらに正確に生じる可能性があります。次の例は、特定のカテゴリのフィルタリングなど、検索結果をフィルタリングする方法を示しています。
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addMust($query->match('title', 'keyword'));
$boolQuery->addFilter($query->term('category', 'news'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
フィルタリング条件を追加することにより、検索範囲を効果的に狭くすることができ、検索結果の関連性と精度を改善できます。
この記事では、PHPとManticore検索を組み合わせてインテリジェント検索フィルタリング機能を実装する方法を紹介します。環境構築、インデックス作成、フルテキスト検索、条件付きフィルタリングなどの重要な手順をカバーしています。検索エンジンの開発を刺激し、ユーザーのニーズに合ったインテリジェントな検索エクスペリエンスの作成に役立つことを願っています。