Solr突出显示返回ID

时间:2017-07-21 12:00:16

标签: java php apache solr lucene

嗨,我做了一个简单的高亮查询

select?fl=name&hl.fl=name&hl=on&indent=on&q=cubo&wt=json

问题在于结果。我不想在json响应中使用id

"highlighting":{
    "fbd29a94-b53d-4de0-8e74-046bf1f921cd":{
      "name":["<em>Cubo</em> de Roda Dianteiro para Ford"]},
    "f6ddf7a0-352e-4789-8e29-ca927274c5cc":{
      "name":["<em>Cubo</em> de Roda Traseiro para Jac Motors"]},
    "1901086a-1867-4c8a-a2b7-ce7578e352c3":{
      "name":["<em>Cubo</em> de Roda Dianteiro para Nissan"]}}

我想要这个......可能吗?我是怎么做到的?

"highlighting":[
    {"name":["<em>Cubo</em> de Roda Dianteiro para Ford"]},
    {"name":["<em>Cubo</em> de Roda Traseiro para Jac Motors"]},   
    {"name":["<em>Cubo</em> de Roda Dianteiro para Nissan"]}]

1 个答案:

答案 0 :(得分:0)

我的猜测是它不可能,因为结果集中可能有文档没有执行突出显示(即它不匹配可突出显示的术语,但它仍然匹配文档)。

如果真的需要这个,你可以在中间件中做到这一点(因为你已经标记了PHP,我将把它用于伪代码):

// keep highlighted entries in sequence
$highlights = [];

foreach ($hits as $doc) {
    // if we have a highlighting element for this document
    if (!empty($result['highlighting'][$doc['id']])) {
        // keep the highlighted text
        $highlights[] = $result['highlighting'][$doc['id']];
    } else {
        // .. and if we don't, add a null element so indices match
        $highlights[] = null; 
    }
}