如何为结果添加更多详细信息?

时间:2018-12-15 09:54:35

标签: php solr faceted-search

我返回的结果来自solr 6.4.1的一个方面,我的目标是:

  1. 拨号
  2. dial_id
  3. 拨号次数(多少个结果)

因为我想将名称(例如,“黑色”)显示为带有结果数量的多面内容,并创建一个链接,稍后将对其进行过滤。

例如:

  

/ search?dial_id = 48

其背后的原因是,我不想创建这样的URL:

  

/ search?dial =格伦

此刻目前的外观如下:

<lst name="dial">
   <int name="Rot">5</int>
   <int name="Grün">4</int>
</lst>

通过PHP创建:

foreach($this->setFacet AS $facet) $this->query->addFacetField(''.$facet.''); 

显然缺少ID

我目前的检索代码如下:

function facete_dial(){
    foreach( $this->response->facet_counts->facet_fields->dial AS $dial => $count){
        $this->dial_facetes[$dial] = $count;    
    }
    return $this->dial_facetes;
}

成功返回结果的颜色和数量。

如何将dial_id添加到构面中以便以后检索?还是对此任务有更好的解决办法?

1 个答案:

答案 0 :(得分:0)

直接的解决方案是创建一个辅助字段-使用显示值和dial_id的组合值,并在两者之间使用分隔符。

即索引值48|Grün,然后在您的PHP代码中执行list($dial_id, $dial_name) = explode('|', $facet_name)

由于刻面是“ 此字段中有多少不同的令牌及其计数”,因此不同字段及其值之间没有任何固有的关联性。

创建一个组合字段,然后从该字段中提取值可以解决该问题。

另一种选择是对dial_id => dial_name信息进行辅助查找,例如在MySQL或键/值存储中。或者,如果信息很少更新,则每次更新时都会生成一个带有关联数组的PHP / JSON文件,并将其包含/读取到应用程序中以将ID解析为名称。