PHPとManticore Searchを使用した検索オートコンプリート機能の開発

WBOY
リリース: 2023-08-07 22:54:01
オリジナル
1446 人が閲覧しました

PHP と Manticore Search を使用した検索オートコンプリート機能の開発

はじめに:
今日のインターネット時代において、検索機能は多くのアプリケーションや Web サイトの重要な部分になっています。検索オートコンプリート機能は、ユーザー エクスペリエンスと検索精度を向上させるための重要な要素です。この記事では、PHP と Manticore Search を使用して、ユーザーが必要なものをより速く見つけられるようにする検索オートコンプリート機能を開発する方法を紹介します。

1.マンティコア検索とは何ですか?
Manticore Search は、オープンソースの検索エンジン Sphinx をベースにした全文検索ソフトウェアです。従来の検索エンジンと比較して、Manticore Search はインデックス作成と検索速度が速く、フォールト トレランスとスケーラビリティが優れています。全文検索、ファセット検索、地理的位置検索などの機能をサポートしており、さまざまなアプリケーションシナリオに適しています。

2. マンティコア検索インデックスの作成
まず、検索対象のコンテンツを保存するためのマンティコア検索インデックスを作成する必要があります。 「autocomplete」という名前のインデックスは、次のコマンドを使用して作成できます。

index autocomplete
{
    type = rt
    rt_mem_limit = 512M
    path = /var/lib/manticore/autocomplete
    charset_table = utf-8
    min_prefix_len = 2
    min_word_len = 2
}
ログイン後にコピー

このインデックスでは、rt_mem_limit はメモリ制限を指定し、path はインデックスのファイル ストレージ パスを指定し、charset_table は文字セット、min_prefix_len および min_word_len を指定します。最小プレフィックス長と最小ワード長はそれぞれ指定されます。

3. インデックスにドキュメントを追加する
次に、検索するドキュメントをインデックスに追加する必要があります。これは、次の PHP コード例で実現できます。

<?php
$client = new SphinxClient();
$client->setServer('localhost', 9312);
$client->setMatchMode(SPH_MATCH_ANY);
$client->setFieldWeights(array('title' => 10, 'content' => 1));

$documents = array(
    array(
        'id' => 1,
        'title' => 'PHP开发',
        'content' => 'PHP是一种广泛使用的开源脚本语言,它特别适用于Web开发。',
    ),
    array(
        'id' => 2,
        'title' => 'Manticore Search',
        'content' => 'Manticore Search是一个基于Sphinx的全文搜索软件,提供了更快的索引和搜索速度。',
    ),
    // 添加更多文档...
);

foreach ($documents as $document) {
    $client->addDocument($document['title'], $document['content'], $document['id']);
}

$result = $client->runQueries();
?>
ログイン後にコピー

上記のコードでは、PHP が Manticore Search と対話するためのツール クラスである SphinxClient クラスを使用します。サーバーアドレスとポート番号を設定し、マッチングモードを任意のマッチングに設定し、タイトルの重みを 10 に、コンテンツの重みを 1 に設定します。次に、ループを通じて検索対象の文書が 1 つずつインデックスに追加されます。

4. 検索自動完了機能の実装
検索自動完了機能を実現するには、Manticore Search のリアルタイム インデックス機能を使用します。ライブインデックス作成は迅速に更新および検索できるため、リアルタイムの検索フィードバックが可能になります。

検索のオートコンプリートは、次の PHP コード例を使用して実現できます。

<?php
$keyword = $_GET['keyword'];

$client->setMatchMode(SPH_MATCH_EXTENDED2);
$client->limit(0, 5); // 给出最多5个自动补全结果

$client->resetFilters();
$client->setFilter('prefix', '', array($keyword));

$result = $client->runQueries();
$suggestions = $result[0]['words'];

foreach ($suggestions as $suggestion) {
    echo $suggestion['word'];
}
?>
ログイン後にコピー

このコードでは、GET リクエストを通じてユーザーが入力した検索キーワードを取得します。次に、setMatchMode メソッドを使用してマッチング モードを拡張マッチングに設定し、limit メソッドを使用して最大 5 つのオートコンプリート結果が返されるように設定します。次に、setFilter メソッドを使用して、検索語を先頭にキーワードが付いている結果に制限します。最後に、runQueries メソッドを通じて検索クエリが実行され、キーワード候補の結果が取得されます。次に、foreach ループを使用してキーワード候補を次々に出力します。

概要:
PHP と Manticore Search を使用すると、検索のオートコンプリート機能を簡単に実装できます。 Manticore Search インデックスを作成してドキュメントを追加し、リアルタイム インデックスと特定の検索クエリ ステートメントを使用することで、検索オートコンプリート機能をすばやく実装できます。これにより、ユーザー エクスペリエンスが大幅に向上し、ユーザーが必要なものをより速く見つけられるようになります。この記事がお役に立てば幸いです!

以上がPHPとManticore Searchを使用した検索オートコンプリート機能の開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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