ホームページ > バックエンド開発 > PHPチュートリアル > PHP と Apache Solr を使用した検索エンジンの構築

PHP と Apache Solr を使用した検索エンジンの構築

王林
リリース: 2023-06-25 08:30:02
オリジナル
1329 人が閲覧しました

インターネットとモバイル デバイスの普及により、人々が情報を入手して答えを見つけるための最初の選択肢は検索エンジンになりました。効率的で正確な検索エンジンを構築するには、さまざまなテクノロジーとツールを使用する必要があります。この記事では、PHP と Apache Solr を使用して検索エンジンを構築する方法を紹介します。

1.Apache Solr とは何ですか?

Apache Solr は、Java で書かれた Lucene をベースとしたオープンソースの検索プラットフォームで、高速でスケーラブルかつ効率的なテキスト検索および分析機能を提供します。 Solr は、テキスト、XML、JSON、およびその他のデータ形式を保存、インデックス付け、検索できます。 Lucene クエリ構文、SQL、XPath、XSLT などの複数のクエリ言語をサポートします。

2.Apache Solr を選択する理由は何ですか?

他の検索エンジン ソフトウェアと比較すると、Solr には次の利点があります。

  1. 効率: Solr は大量のデータを処理でき、クエリ時に必要な情報を迅速に見つけることができます。
  2. スケーラビリティ: Solr は数百のサーバーに拡張でき、水平拡張をサポートします。
  3. 使いやすさ: Solr は複数のクエリ言語とデータ形式をサポートしており、構成と展開は比較的簡単です。

3. Apache Solr の使用方法は?

  1. Apache Solr のインストール

まず、最新バージョンの Apache Solr をダウンロードし、適切なディレクトリに抽出する必要があります。次に、公式ドキュメント (https://lucene.apache.org/solr/guide/8_6/) に従って設定して開始します。

  1. インデックスの作成

Solr の中心的な機能は、データのインデックス付けと検索です。インデックス付けとは、データを Solr サーバーに特定の方法で保存することです。 Solr は、JSON、XML、CSV などの複数のデータ形式をサポートしています。

以下では、JSON 形式を例としてインデックスの作成方法を紹介します。

まず、データ構造とインデックス構成を記述する schema.xml ファイルを定義する必要があります。 schema.xml には次の内容が含まれます:

  1. field: インデックス フィールドとデータ型を定義します。
  2. copyField: あるフィールドから別のフィールドにコピーするためのルールを定義します。
  3. uniqueKey: インデックス付きドキュメントの一意の識別子を定義します。

例:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="title" type="text_general" indexed="true" stored="true" multiValued="false" />
<field name="content" type="text_general" indexed="true" stored="true" multiValued="true" />
<copyField source="title" dest="text" />
<copyField source="content" dest="text" />
<uniqueKey>id</uniqueKey> 
ログイン後にコピー

次に、curl コマンドを使用してデータを Solr にインポートします:

curl http://localhost:8983/solr/mycore/update -H “Content-Type:application/json" -d '[
{ "id":"1", "title":"Solr是什么", "content":"Solr是一款开源搜索引擎" },
{ "id":"2", "title":"Solr如何使用", "content":"可以使用Java或HTTP协议发送请求到Solr服务器" },
{ "id":"3", "title":"Solr的优势是什么", "content":["高效性", "可扩展性", "易用性"] }
]’
ログイン後にコピー

上記のコマンドは、ID 1 のデータをインポートすることを意味します。 、2、および 3 mycore インデックス ライブラリにインポートします。

  1. クエリ データ

Solr のクエリ言語は、ワイルドカード クエリ、フレーズ クエリ、範囲クエリ、ブール クエリなど、さまざまなクエリ方法をサポートしています。以下は HTTP クエリを例にしています:

http://localhost:8983/solr/mycore/select?q=title:Solr&fq=content:开源&sort=id+desc&start=0&rows=10&fl=title,id
ログイン後にコピー

上記のクエリの意味:

  1. クエリ条件: タイトルは Solr です。
  2. フィルタ条件: コンテンツに「オープンソース」が含まれています。
  3. 並べ替え: ID の降順で並べ替えます。
  4. ページング: 0 番目のレコードから開始して 10 レコードを取ります。
  5. 戻りフィールド: タイトル フィールドと ID フィールドのみが返されます。

4. PHP を使用して Solr サーバーに接続するにはどうすればよいですか?

PHP は、HTTP リクエストの送信に使用できるcurl 拡張機能を提供します。以下は、Solr サーバーに接続する簡単な例です。

<?php
$url = 'http://localhost:8983/solr/mycore/select?q=title:Solr';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>
ログイン後にコピー

上記のコードは、Solr サーバーにクエリ要求を送信することを意味し、返された結果は $response 変数に格納されます。

5. PHP と Solr を使用して検索エンジンを構築するにはどうすればよいですか?

  1. インデックスの構築

まず、検索するデータを Solr にインポートする必要があります。インポート操作を実行するには、curl コマンドを使用するか、PHP でコードを記述します。 。例:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/mycore/update?commitWithin=1000');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

$response = curl_exec($ch);

curl_close($ch);
ログイン後にコピー

上記のコードは、PHP を使用して $json_data のデータを mycore という名前のインデックス ライブラリにインポートし、送信操作を 1 秒以内に完了することを示しています。

  1. データのクエリ

PHP を使用して Solr サーバーに接続し、クエリ インターフェイスを呼び出し、クエリ結果を返します。例:

$url = 'http://localhost:8983/solr/mycore/select?q='.$query.'&start='.($page-1)*$rows.'&rows='.$rows.'&wt=json&indent=true';

$response = file_get_contents($url);
ログイン後にコピー

上記のコードは、クエリ条件 $query を定義することを意味します。ページ $page では、各ページに $rows 個のデータが表示されます。 file_get_contents 関数を使用して、Solr サーバーからクエリ結果を取得します。

  1. データの表示

クエリ結果を PHP 配列に解析し、必要に応じてページング、並べ替え、フィルタリングなどの操作を実行し、最後にデータをページに例:

$data = json_decode($response, true);

foreach ($data['response']['docs'] as $doc) {
    echo '<a href="'.$doc['url'].'">'.$doc['title'].'</a><br/>';
}
ログイン後にコピー

上記のコードは、クエリ結果を走査し、各データのタイトルとリンクを表示することを示しています。

6. 概要

この記事では、PHP と Apache Solr を使用して検索エンジンを構築する方法を紹介します。 Solr の基本的な機能、使用方法、PHP との組み合わせについて詳しく説明することで、読者はすぐに Solr の使い方をマスターし、PHP を使用して検索エンジンのコードを作成できます。 Solr は強力な検索および分析機能を提供し、さまざまなタイプの検索エンジンの構築に最適です。

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

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