ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Apache Solr を使用した検索エンジンの構築
インターネットとモバイル デバイスの普及により、人々が情報を入手して答えを見つけるための最初の選択肢は検索エンジンになりました。効率的で正確な検索エンジンを構築するには、さまざまなテクノロジーとツールを使用する必要があります。この記事では、PHP と Apache Solr を使用して検索エンジンを構築する方法を紹介します。
1.Apache Solr とは何ですか?
Apache Solr は、Java で書かれた Lucene をベースとしたオープンソースの検索プラットフォームで、高速でスケーラブルかつ効率的なテキスト検索および分析機能を提供します。 Solr は、テキスト、XML、JSON、およびその他のデータ形式を保存、インデックス付け、検索できます。 Lucene クエリ構文、SQL、XPath、XSLT などの複数のクエリ言語をサポートします。
2.Apache Solr を選択する理由は何ですか?
他の検索エンジン ソフトウェアと比較すると、Solr には次の利点があります。
3. Apache Solr の使用方法は?
まず、最新バージョンの Apache Solr をダウンロードし、適切なディレクトリに抽出する必要があります。次に、公式ドキュメント (https://lucene.apache.org/solr/guide/8_6/) に従って設定して開始します。
Solr の中心的な機能は、データのインデックス付けと検索です。インデックス付けとは、データを Solr サーバーに特定の方法で保存することです。 Solr は、JSON、XML、CSV などの複数のデータ形式をサポートしています。
以下では、JSON 形式を例としてインデックスの作成方法を紹介します。
まず、データ構造とインデックス構成を記述する schema.xml ファイルを定義する必要があります。 schema.xml には次の内容が含まれます:
例:
<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 インデックス ライブラリにインポートします。
Solr のクエリ言語は、ワイルドカード クエリ、フレーズ クエリ、範囲クエリ、ブール クエリなど、さまざまなクエリ方法をサポートしています。以下は HTTP クエリを例にしています:
http://localhost:8983/solr/mycore/select?q=title:Solr&fq=content:开源&sort=id+desc&start=0&rows=10&fl=title,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 を使用して検索エンジンを構築するにはどうすればよいですか?
まず、検索するデータを 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 秒以内に完了することを示しています。
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 サーバーからクエリ結果を取得します。
クエリ結果を 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 サイトの他の関連記事を参照してください。