ホームページ  >  記事  >  バックエンド開発  >  PHP の Solr を使用した全文検索

PHP の Solr を使用した全文検索

王林
王林オリジナル
2023-06-20 09:12:061750ブラウズ

Solr は、全文検索の実装に使用できる Lucene ベースの検索エンジンです。全文検索に PHP で Solr を使用すると、キーワードを通じて関連データを迅速にクエリし、検索結果の精度と信頼性を向上させることができます。この記事では、PHP で Solr を使用して全文検索を行う方法を紹介します。

1. Solr のインストールと構成

まず、Solr と PHP の Solr 拡張機能をサーバーにインストールする必要があります。 Solr のインストール手順については、Solr の公式ドキュメントを参照してください。PHP の Solr 拡張機能は、次のコマンドを使用してインストールできます:

sudo pecl install solr

インストールが完了したら、Solr 拡張機能を PHP 構成ファイルに追加する必要がありますたとえば、Ubuntu の場合 /etc/php/7.0/apache2/php.ini ファイルを編集して、次の内容を追加します。

extension=solr.so

ファイルを保存して終了した後、Apache サーバーを再起動して設定を有効にします。 。

2. Solr インデックスの作成

Solr と PHP の Solr 拡張機能をインストールした後、Solr インデックスを作成する必要があります。 Solr インデックスは、データベース テーブル内のすべてのデータに対応する高速ルックアップ テーブルであり、全文検索をサポートするために使用されます。 Solr インデックスを作成する手順は次のとおりです。

  1. 新しい Solr コアの作成
sudo su - solr -c "/opt/solr/bin/solr create -c mycore"

「mycore」はインデックスに似た名前で、次のように定義できます。あなた自身。作成が成功したら、http://localhost:8983/solr/#/mycore にアクセスして表示できます。

  1. Solr でインデックス フィールドを定義する

Solr では、インデックスに必要なフィールドを定義する必要があります。たとえば、記事のタイトルと本文の内容を検索したい場合は、タイトルと内容のフィールドをそれぞれ定義する必要があります。

Solr の管理インターフェイスで定義できます。左側の [スキーマ] ボタンをクリックし、[フィールド] タブの [フィールドの追加] をクリックし、フィールド名に「タイトル」を入力し、フィールドのタイプを入力します。 「text_cn」(text_cnはSolrの中国語アナライザー)として「保存」ボタンをクリックして保存します。

同様に、「text_cn」タイプの「content」という名前のフィールドを作成できます。

  1. Solr インデックスへのデータのインポート

Solr コアを作成し、インデックス フィールドを定義した後、データベース内のデータを Solr インデックスにインポートする必要があります。これは、PHP スクリプトを作成することで実現できます。

以下はサンプル コードです:

<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "mydatabase";

//连接数据库
$conn = new mysqli($servername, $username, $password, $dbname);

//检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 

//查询数据库中的数据
$sql = "SELECT id, title, content FROM articles";
$result = $conn->query($sql);

//创建Solr客户端
$options = array(
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore'
);
$client = new SolrClient($options);

//将数据导入到Solr索引中
while($row = $result->fetch_assoc()) {
    $doc = new SolrInputDocument();
    $doc->addField('id', $row['id']);
    $doc->addField('title', $row['title']);
    $doc->addField('content', $row['content']);
    $client->addDocument($doc);
}
$client->commit();
$client->optimize();
echo "Solr索引创建成功!";

//关闭数据库连接
$conn->close();
?>

上記のコードでは、SolrClient() メソッドの $username、$password、$dbname、$options、mycore を次のコードに置き換える必要があります。対応する値。

このスクリプトを実行すると、Solr インデックスにデータベース内のデータが含まれ、関連データをキーワードで検索できるようになります。

3. Solr による全文検索

インデックスにデータが含まれたら、Solr を使用して全文検索を実行できます。検索機能は、PHP アプリケーションを介して Solr サーバーと通信することで実現でき、Solr が提供するクエリ言語は Solr Query Language (SOLRQ) です。クエリ構文は、要求されたデータと Solr によってインデックス付けされたデータを比較し、必要なテキストがどのドキュメントに含まれているかを識別するために使用されます。

以下は簡単な検索コードの例です:

<?php
//创建Solr客户端
$options = array(
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore'
);
$client = new SolrClient($options);

//查询数据
$query = 'title:关键词';
$query_response = $client->query($query);
$response = $query_response->getResponse();
$docs = $response['response']['docs'];
foreach ($docs as $doc) {
     echo $doc['title'] . "
";
}
?>

上記のコードでは、$options、mycore、および $query の「キーワード」を対応する値に置き換える必要があります。

検索構文では、タイトル:キーワードは、タイトルに「キーワード」が含まれるドキュメントを検索することを意味します。コンテンツを検索したい場合は、content: キーワード フォームを使用できます。ファジー クエリ、範囲クエリ、ブール クエリなど、クエリに対してさらに変更操作を行うこともできます。

4. 概要

この記事では、PHP で Solr を使用して全文検索を行う基本的な手順を紹介します。まず、Solr インデックスを作成してデータベース内のデータを Solr インデックスにインポートし、PHP アプリケーションを通じて Solr サーバーと通信して検索やその他の操作を実行します。実際のアプリケーションでは、さらに多くの機能属性と構成オプションを学習し、使用する必要があります。この記事が皆様のお役に立てれば幸いです。

以上がPHP の Solr を使用した全文検索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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