ソリューションの検索 solr+php をインストールして設定するにはどうすればよいですか?

PHP中文网
リリース: 2023-03-01 07:44:01
オリジナル
1624 人が閲覧しました

質問

solr+php インストール、設定、使用方法

解決策1:

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 をインストールして確認します インストールされました

CentOS での Solr5.3 のインストールを参照してください

so​​lr5.3 は Web 管理の背景を含めてすでに別のサーバーなので、非常に優れています
Linux に jdk があることを確認してください

solr5.3 のパッケージを直接ダウンロードしてください。Apache Download Mirrors

必ずこのように 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、独自に設計してくださいインデックスの検索

http://yourip::8983/solr これは管理インターフェイスです。作成したコアを選択してください

ドキュメントの追加とクエリに集中するだけです。1つのことでインデックスを追加します。1つのことをクエリします。非常に理解しやすいです

addドキュメントインターフェイス、すでに例があり、2つのフィールドIDとタイトルがインデックス化されており、データ送信

クエリインターフェイスq=*:*を変更してすべてをクエリ

q=title:a*をタイトルにクエリ後で理解するのは簡単です

のために数回再生してみましょう。今、独自のフィールドを追加したいのですが、データディレクトリに移動して「title」を実行し、idとtitleの設定項目を見つけてください。同様の例:

以下に示すようにタイプを入力してください

service solr stop/ start サービスを再起動します

管理インターフェイスに戻り、データを追加します。タイトルとタイプを一緒に検索したいとします。

次に、q= title:xx 2 つの研究で、基本的にデータを作成し、データを検索して、完了するための PHP プログラムを作成します。これらの関数

参考: PHP: Solr - Manual

SolrInputDocument 入力ドキュメント
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拡張機能をインストールします



PHPアプリケーションとSolr検索エンジンを統合します

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!