如何将每个结果的更多详细信息添加到 solr 方面?
How to add more details per result to solr facet?
我正在返回一个来自 solr 6.4.1 的结果,我的目标是:
- 拨号
- dial_id
- 拨号次数(多少个结果)
因为我想将名称(例如 "black")显示为带有结果数量的分面,并创建一个 link 稍后将对其进行过滤。
例如:
/search?dial_id=48
其背后的原因是,我不想创建这样的 URL:
/search?dial=Grün
facete 现在看起来像这样:
<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 添加到分面以便稍后检索它?还是有更好的方法来完成这项任务?
直接的解决方案是创建一个辅助字段 - 使用显示值和 dial_id
的组合值,并在两者之间加上分隔符。
即索引值 48|Grün
,然后在 PHP 代码中执行 list($dial_id, $dial_name) = explode('|', $facet_name)
。
由于分面是 "how many different tokens and their counts exists in this field",因此不同字段及其值之间没有任何内在关联。
创建组合字段然后从该字段中提取值可以解决该问题。
另一个选项是对 dial_id => dial_name
信息执行二次查找,例如在 MySQL 或 key/value 商店中。或者,如果信息很少更新,则每次更新时生成一个带有关联数组的 PHP/JSON 文件,并在您的应用程序中 include/read 将 id 解析为名称。
我正在返回一个来自 solr 6.4.1 的结果,我的目标是:
- 拨号
- dial_id
- 拨号次数(多少个结果)
因为我想将名称(例如 "black")显示为带有结果数量的分面,并创建一个 link 稍后将对其进行过滤。
例如:
/search?dial_id=48
其背后的原因是,我不想创建这样的 URL:
/search?dial=Grün
facete 现在看起来像这样:
<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 添加到分面以便稍后检索它?还是有更好的方法来完成这项任务?
直接的解决方案是创建一个辅助字段 - 使用显示值和 dial_id
的组合值,并在两者之间加上分隔符。
即索引值 48|Grün
,然后在 PHP 代码中执行 list($dial_id, $dial_name) = explode('|', $facet_name)
。
由于分面是 "how many different tokens and their counts exists in this field",因此不同字段及其值之间没有任何内在关联。
创建组合字段然后从该字段中提取值可以解决该问题。
另一个选项是对 dial_id => dial_name
信息执行二次查找,例如在 MySQL 或 key/value 商店中。或者,如果信息很少更新,则每次更新时生成一个带有关联数组的 PHP/JSON 文件,并在您的应用程序中 include/read 将 id 解析为名称。