我试图在弹性搜索-php中突出我的结果,我用我的知识尝试了很多并在谷歌搜索,但没有运气,同样的查询在Sense中完美运行。我在Sense中的查询是
GET /bank/account/_search
{
"query" : {
"match_phrase" : {
"address" : "mill"
}
},
"highlight": {
"pre_tags" : ["<tag1>"],
"post_tags" : ["</tag1>"],
"fields" : {
"address" : {}
}
}
}
以上查询我得到了我需要的确切结果,这是我得到的结果
highlight": {
"address": [
"990 <tag1>Mill</tag1> Road"
]
}
我尝试使用php进行相同的查询我没有得到突出显示的结果我的php查询
<?php
require 'vendor/autoload.php';
$client=new Elasticsearch\Client();
$indexParams = [
'index' => 'bank',
'type' => 'account',
'body' => [
'query' => [
'match' => [
"address" => "mill"
],
],
'highlight' => [
"pre_tags" => "<tag1>",
"post_tags" => "</tag1>",
'fields' => [
'address' => new \stdClass()
]
],
]
];
$results = $client->search($indexParams);
try {
$response = $client->search($indexParams);
} catch (Exception $e) {
var_dump($e->getMessage());
}
echo '<pre>',print_r($response),'</pre>';
?>
我得到的结果是
[highlight] => Array
(
[address] => Array
(
[0] => 715 Mill Avenue
)
)
答案 0 :(得分:1)
我得到了上述问题的答案,我以json和JSON的形式发送参数对结果进行编码,当我在JSON中对结果进行编码时,前置标签出现在高亮查询中。
我的解决方案是
"highlight": {
"address": [
"817 Campus </span>Road</span>"
]
}