使用 Laravel 来调用 Apache Solr
Apache Solr是一个开源的全文搜索引擎服务器。你可以在http://lucene.apache.org/solr/上了解更多信息。
Solarium PHP Solr客户端库
https://github.com/solariumphp/solarium
前提是Solr已在某处设置好。
每个版本如下所示:PHP 7.2、laravel 5.7、solr 7.6、Solarium 4
安装
我们将设置Solr访问库Solarium,用于PHP语言。
$ composer require solarium/solarium
我将编写设置文件。我在本地创建了一个名为“test”的核心。
<?php
return [
'endpoint' => [
'localhost' => [
'host' => env('SOLARIUM_HOST', '127.0.0.1'),
'port' => env('SOLARIUM_PORT', 8983),
'path' => env('SOLARIUM_PATH', '/solr'),
'core' => env('SOLARIUM_CORE', 'test'),
]
]
];
添加唱片
将数据注册到核心。这是书籍数据。
// Solrクライアント取得
$client = new Solarium\Client(config('solarium'));
// 更新オブジェクトを生成
$update = $client->createUpdate();
// まとめて登録
foreach ($books as $book) {
$doc = $update->createDocument();
$doc->source = $book->source;
$doc->sid = $book->isbn;
$doc->country = $book->getIsbnCountry();
$doc->title = $book->title;
$doc->author = $book->author;
$doc->pubdate = $book->pubdate;
$update->addDocument($doc);
}
// Solrへ更新をコミット
$update->addCommit();
$result = $client->update($update);
if ($result->getStatus() != 0) {
Log::error('Solr update failed.');
}
搜索唱片
可以搜索已注册的图书数据。
可以设置固定的筛选条件,以及偏移量和获取数量,还可以设置排序方式。
但是,需要注意的是,如果进行排序,无论搜索得分如何,都会被排序影响。
// Solrクライアント取得
$client = new Solarium\Client(config('solarium'));
// 検索オブジェクトを生成
$query = $client->createSelect();
// フィルターを設定
$query->createFilterQuery('source')->setQuery('source:openbd');
// 検索クエリ
$query->setQuery('title:よつばと! AND author:"あずま きよひこ"');
// オフセットと取得数を設定
$query->setStart($offset)->setRows($limit);
// ソートを設定
$query->addSort('pubdate', $query::SORT_DESC);
// 検索を実行
$result = $client->select($query);
// 検索結果
// 結果.総件数 : $results->getNumFound();
foreach ($results as $doc) {
// 結果.各アイテム : $doc->isbn
}
很简单,但就只有这样了。