ホームページ  >  記事  >  バックエンド開発  >  PHPとManticore Searchを利用したナレッジグラフ検索機能の開発

PHPとManticore Searchを利用したナレッジグラフ検索機能の開発

PHPz
PHPzオリジナル
2023-08-09 09:40:491147ブラウズ

利用PHP和Manticore Search开发知识图谱搜索功能

PHP と Manticore Search を使用してナレッジ グラフ検索機能を開発します。

概要:
ナレッジ グラフは、エンティティ、属性と関係が図の形式で表示されます。今日のビッグデータ時代では、ナレッジグラフは検索エンジン、インテリジェントな質疑応答システムなど、さまざまな分野で広く使用されています。この記事では、PHP と Manticore Search を使用してナレッジ グラフに基づく検索機能を開発する方法とコード例を紹介します。

1. Manticore Search のインストールと設定
まず、Manticore Search をインストールして設定する必要があります。インストールパッケージは公式Webサイト(https://manticoresearch.com/downloads/)からダウンロードできます。

インストールが完了したら、構成を実行する必要があります。 manticore.conf ファイルを開き、インデックス パス、リスニング ポート、その他の情報を構成します。

2. ナレッジ グラフ データの構築
検索機能を開発する前に、ナレッジ グラフ データを構築し、そのデータを Manticore Search にインポートする必要があります。映画ナレッジ グラフを例にとると、データ構造は次のとおりです。

  1. エンティティ: 映画
    属性: 映画 ID、映画名、監督、俳優、タイプ、評価など
  2. エンティティ : アクター
    属性 : アクター ID、アクター名、生年月日、性別など
  3. エンティティ : ディレクター
    属性 : ディレクター ID、ディレクター名、生年月日、性別など
  4. 関係 : 俳優と映画の関係
    属性 : 俳優 ID、映画 ID、キャラクター名
  5. 関係 : 監督と映画の関係
    属性 : 監督ID、ムービー ID

上記のデータを Manticore の API を使用して実装できる Manticore 検索インデックスにインポートします。サンプル コードは次のとおりです:

<?php
// 知识图谱数据导入示例代码
$host = 'localhost';
$port = 9308;

// 连接Manticore Search
$client = new ManticoresearchClient([
    'host' => $host,
    'port' => $port
]);

// 创建索引
$client->indices()->create([
    'index' => 'movies',
]);

// 定义字段
$fields = [
    'id' => ['type' => 'integer'],
    'name' => ['type' => 'text'],
    'director' => ['type' => 'text'],
    'actor' => ['type' => 'text'],
    'genre' => ['type' => 'text'],
    'rating' => ['type' => 'float'],
];

// 创建文档
$movies = [
    ['id' => 1, 'name' => 'The Shawshank Redemption', 'director' => 'Frank Darabont', 'actor' => 'Tim Robbins, Morgan Freeman', 'genre' => 'Drama', 'rating' => 9.3],
    ['id' => 2, 'name' => 'The Godfather', 'director' => 'Francis Ford Coppola', 'actor' => 'Marlon Brando, Al Pacino', 'genre' => 'Crime', 'rating' => 9.2],
    // 其他电影数据...
];

// 将文档添加到索引中
$documents = [];
foreach ($movies as $movie) {
    $document = new ManticoresearchDocument();
    $document->setIndex('movies');
    $document->setId($movie['id']);
    $document->setFields($movie);
    $documents[] = $document;
}

$client->bulk($documents);

// 关闭连接
$client->getConnection()->close();

3. ナレッジの実装グラフ検索機能
ナレッジ グラフ検索の鍵は、さまざまなエンティティや関係に対応する適切なクエリ ステートメントを構築することです。

次は、映画名、俳優、監督に基づいて検索する機能を実装した簡単な映画検索のサンプル コードです。

<?php
// 电影搜索示例代码
$host = 'localhost';
$port = 9308;

// 连接Manticore Search
$client = new ManticoresearchClient([
    'host' => $host,
    'port' => $port
]);

// 构建查询语句
$query = new ManticoresearchQueryBoolQuery();
$query->addMust(new ManticoresearchQueryMatchQuery('name', 'The Shawshank Redemption'));
$query->addMust(new ManticoresearchQueryMatchQuery('actor', 'Morgan Freeman'));
$query->addMust(new ManticoresearchQueryMatchQuery('director', 'Frank Darabont'));

// 执行查询
$search = new ManticoresearchSearch($client);
$search->addIndex('movies');
$search->setQuery($query);
$result = $search->search();

// 输出结果
print_r($result->getDocuments());

// 关闭连接
$client->getConnection()->close();

4. まとめ
この記事では、ナレッジ グラフ検索関数を開発するための PHP およびマンティコア検索メソッドと、関連するコード例を提供します。クエリステートメントを適切に構築することで、正確かつ効率的なナレッジグラフ検索を実現できます。同時に、Manticore Search の強力な機能により、検索エンジンの開発がより簡単かつ便利になります。この記事がナレッジ グラフ検索の開発プロセスに役立つことを願っています。

以上がPHPとManticore Searchを利用したナレッジグラフ検索機能の開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。