ホームページ > バックエンド開発 > PHPチュートリアル > PHP およびマンティコア検索開発ガイド: 候補を含む検索結果の集約

PHP およびマンティコア検索開発ガイド: 候補を含む検索結果の集約

WBOY
リリース: 2023-08-06 06:02:01
オリジナル
1600 人が閲覧しました

PHP およびマンティコア検索開発ガイド: 検索結果を集約するための提案の利用

はじめに:
検索テクノロジの継続的な開発により、最新の検索エンジンは多くの Web アプリケーションの中核コンポーネントになりました。 PHP 開発では、オープンソースの全文検索エンジンである Manticore Search を使用して、高速かつ効率的な検索機能を実現できます。この記事では、PHP と Manticore Search を使用して開発する方法と、その提案機能を活用して検索結果を集約する方法について説明します。

I. Manticore Search の概要
Manticore Search は Sphinx 全文検索エンジンのアップグレード バージョンであり、より高いパフォーマンスとより多くの機能を提供します。分散インデックス作成、リアルタイムインデックス作成、複数のクエリ構文、高度にカスタマイズ可能なパラメータ構成をサポートしているため、開発者はさまざまな検索ニーズに柔軟に対応できます。

II. Manticore Search のインストールと構成
まず、サーバーに Manticore Search をインストールする必要があります。 PHP パッケージ マネージャー Composer を使用してインストールすることをお勧めします。プロジェクト ディレクトリのcomposer.json ファイルに、次の依存関係を追加します。

{
    "require": {
        "bobthecow/manticoresearch": "^2.0"
    }
}
ログイン後にコピー

次に、コマンド ラインで composer install を実行して、Manticore Search をインストールします。

インストールが完了したら、設定する必要があります。プロジェクトのルート ディレクトリに構成ファイルを作成し、manticore.conf という名前を付けます。構成は次のとおりです。

index main
{
    type = plain
    path = /path/to/index
    source = src
}
searchd
{
    listen = localhost:9306:mysql41
    binlog_path = /path/to/binlog
    log = /path/to/log/searchd.log
}
ログイン後にコピー

上記の構成ファイルでは、main という名前のインデックスと searchd という名前の検索デーモンを定義します。実際の開発では、必要に応じてより詳細な設定を行うことができます。

III. インデックスの作成とデータのインポート
まず、データを保存するためのインデックスを作成する必要があります。 PHP では、これは Manticore Search が提供する API を使用して実現できます。

<?php
require 'vendor/autoload.php';

use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQuery;
use ManticoresearchQueryBuilders;

$client = new Client();
$client->connect(['host' => 'localhost', 'port' => 9306]);

// 创建索引
$client->indexCreate('main');
$index = $client->getIndex('main');

// 创建字段
$index->fieldCreate([
    'name' => 'title',
    'type' => 'text',
    'indexed' => true,
]);

// 导入数据
$data = [
    ['id' => 1, 'title' => 'PHP 开发'],
    ['id' => 2, 'title' => 'Manticore Search'],
    ['id' => 3, 'title' => '全文搜索引擎'],
];

foreach ($data as $item) {
    $index->addDocument($item['id'], ['title' => $item['title']]);
}

// 等待索引刷新
$index->flush();
?>
ログイン後にコピー

IV. サジェスト機能の実装
Manticore Search は、ユーザーが入力したキーワードに基づいて検索の候補を提供できるサジェスト機能を提供します。以下は、提案機能を使用して検索結果を集約する方法を示す簡単な例です。

<?php
// 获取用户输入的关键字
$keyword = $_GET['keyword'];

// 创建一个布尔查询
$query = new BoolQuery();

// 添加全文搜索子查询
$query->addMust(new QueryMatchPhrasePrefix(['title' => $keyword]));

// 添加建议子查询
$suggestions = new BuildersSuggest(Suggest::RELEVANT_TERMS);
$suggestions->setMatchPhrase('title', $keyword);
$query->setSuggest($suggestions);

// 执行查询
$search = $client->search($query);

// 获取搜索结果
$results = $search->getRawResponse()['hits']['hits'];

// 获取建议结果
$suggest = $search->getSuggest();

// 输出搜索结果
foreach ($results as $result) {
    echo $result['_source']['title'] . "<br>";
}

// 输出建议结果
foreach ($suggest as $term) {
    echo $term['text'] . "<br>";
}
?>
ログイン後にコピー

V. 概要
この記事では、PHP と Manticore Search を使用して効率的な検索機能を開発し、そのサジェスト機能を使用して検索結果を集約する方法を紹介します。 Manticore Search の API と機能を合理的に使用することで、強力な検索エンジンを簡単に構築し、より優れたユーザー エクスペリエンスを提供できます。読者の皆様には、実際の開発においてこれらの技術を柔軟に活用していただき、検索機能の品質と性能をさらに向上していただければ幸いです。

以上がPHP およびマンティコア検索開発ガイド: 候補を含む検索結果の集約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート