在ThinkPHP框架中进行Elasticsearch全文检索需要先安装Elasticsearch扩展库,可以使用composer来安装:
composer require elasticsearch/elasticsearch
安装完成后,可以在控制器中使用以下代码来连接Elasticsearch:
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->setHosts(['localhost:9200'])->build();
其中,setHosts
方法中需要填写Elasticsearch的地址和端口号。接下来,我们可以使用以下代码进行全文检索:
$params = [
'index' => 'your_index_name',
'body' => [
'query' => [
'match' => [
'your_field_name' => 'your_search_keyword'
]
]
]
];
$results = $client->search($params);
foreach($results['hits']['hits'] as $hit) {
//处理搜索结果
}
其中,your_index_name
和your_field_name
需要替换为自己的索引名称和字段名称。your_search_keyword
是搜索关键词。
如果想给关键词加上高亮颜色,可以使用Elasticsearch的highlight功能。可以将查询参数修改为:
$params = [
'index' => 'your_index_name',
'body' => [
'query' => [
'match' => [
'your_field_name' => 'your_search_keyword'
]
],
'highlight' => [
'fields' => [
'your_field_name' => new \stdClass()
]
]
]
];
搜索结果中会有一个highlight
字段,其中包含了高亮后的内容。可以使用以下代码来获取高亮后的内容:
$highlight = $hit['highlight']['your_field_name'][0];
其中,your_field_name
需要替换为自己的字段名称。