質問
solr+php インストール、設定、使用方法
solrはhttpリクエストクエリインターフェースを提供します。クライアントは、http リクエストをトリガーして json、xml、およびその他のデータ形式でデータを取得し、データを解析して表示します。一般に、さまざまな言語には、Java の solrj、Python の solrpy、PHP の php-solr-client などのカプセル化されたクライアント プラグインがあり、提供された API に従ってインデックスを作成したりクエリを実行したりできます。 solr のインストールと設定については、solr クックブックを参照してください
解決策 2:
最初は心配でした。方法がわかりません Java をどうするか? 検索システムのインデックスを作成するにはどうすればよいですか?
PHPでコードを書くには?
solr は Java で書かれており、管理インターフェースを備えており、
PHP には solr 拡張機能が備わっています。 1. solr をインストールして確認します インストールされました
solr5.3 は Web 管理の背景を含めてすでに別のサーバーなので、非常に優れています
Linux に jdk があることを確認してください
必ずこのように solr5.3.tgz をダウンロードしてください。src パッケージはダウンロードせず、解凍して solr5 のようなディレクトリを取得してください。 3
インストールの最も重要な 2 つのポイント 1. 解凍せずに使用できます。 solr ディレクトリにディレクトリがあります。 インストール スクリプトを実行する必要があり、データ ディレクトリを指定する必要があります (インデックスを保存するため) 2. Solr には、データベース内の db として理解できるコアの概念があり、これにもスクリプトがありますが、データ ディレクトリに
# solr- の権限があることを確認する必要があります。 5.3.0/bin/install_solr_service.sh solr-5.3.0.tgz -d /data/solr -i /usr/local
-i は、solr サーバーをインストールした場所を示します
# su - solr -c "/usr/ local/solr/solr/bin/solr create -c corename
独自のコアを作成します
service solr start サービスを開始します
http://yourip::8983/solr これは管理インターフェイスです
2、独自に設計してくださいインデックスの検索
ドキュメントの追加とクエリに集中するだけです。1つのことでインデックスを追加します。1つのことをクエリします。非常に理解しやすいです
addドキュメントインターフェイス、すでに例があり、2つのフィールドIDとタイトルがインデックス化されており、データ送信
クエリインターフェイスq=*:*を変更してすべてをクエリq=title:a*をタイトルにクエリ後で理解するのは簡単です
のために数回再生してみましょう。今、独自のフィールドを追加したいのですが、データディレクトリに移動して「title」を実行し、idとtitleの設定項目を見つけてください。同様の例:
以下に示すようにタイプを入力してください
service solr stop/ start サービスを再起動します
次に、q= title:xx 2 つの研究で、基本的にデータを作成し、データを検索して、完了するための PHP プログラムを作成します。これらの関数
参考: PHP: Solr - ManualSolrInputDocument 入力ドキュメント
SolrClient Solr サーバーに接続するユーザーです
SolrQuery 検索条件を構築します
プログラムに直接アクセスします:
class Search { private $client; public function __construct() { $options = [ 'hostname' => 'localhost', //solr服务器的ip 'path' => 'solr/corename', //这个解决core的问题,corename就是你的core 'wt' => 'json', ]; $this->client = new \SolrClient($options); } public function addIndex($id, $type, $content) {//加索引的函数 $doc = new \SolrInputDocument(); $doc->addField('id', $type . "." . $id); //保证id唯一我把type加上了 $doc->addField('type', $type); $doc->addField('title', $content); $client = $this->client; $updateResponse = $client->addDocument($doc); $client->commit(); //一定要commit才能立即生效 $ret = ($updateResponse->getResponse()); if ( isset($ret->responseHeader['status']) ) { return $ret->responseHeader['status'] == 0?true:false; } return false; } public function search($key, $type=0, $page=0, $limit=15) { $query = new \SolrQuery(); $query->setQuery('title:' . $key . "*"); //这个是设置keyword $query->setStart($page); //分页的 $query->setRows($limit); if($type) { $query->addFilterQuery('type:' . $type); //用到fq了 } $query->addField('id')->addField('title')->addField('type'); //这里是你要查哪些字段 $client = $this->client; $query_response = $client->query($query); $response = $query_response->getResponse(); $response = ($response->response); if ( is_array($response->docs) ) { foreach($response->docs as &$doc) { $id = explode(".", $doc->id); if( isset($id[1]) ) { $doc->id = $id[1]; } $doc->type = isset($doc->type[0])?$doc->type[0]:''; } } return ($response); } }
関連記事:
php-solr拡張機能をインストールします
PHPアプリケーションとSolr検索エンジンを統合します