我有一个文档,其中包含一组字符串,表示文档在区域(标记)中出现的次数。例如:
[{
"id": "A"
// other properties
"regions": ["3", "3", "3", "2"] // Appears 3 times in region "3" and once in region "2"
},
{
"id": "B"
// other properties
"regions": ["3", "3", "1"] // Appears twice in region "3" and once in region "1"
}]
我尝试使用Tag
类型的自定义评分配置文件,但我不知道如何为更多区域的文档提供更好的分数。换句话说,我希望在document A
中显示3次的region 3
在document B
之前显示region 3
只显示两次{。}}。
仅供参考,我们选择以这种方式代表区域的原因是因为区域太多而且所有区域都没有出现所有文件。更多详情here
这可行吗?这种方式还是其他方式?
答案 0 :(得分:1)
标记评分配置文件检查是否存在标记。如果标签出现多次,则对分数没有影响。
我已阅读您的其他帖子here。您可以考虑的一个解决方案(这不是您想要的)是根据计数来填充区域。例如,您将拥有一组区域,其中文档显示的次数少于10次,介于10到50之间,介于50和100之间(以对场景中区域出现的分布有意义的方式选择范围) 。你的文件看起来像这样:
{
"id": "A"
"regions10": ["3", "2"] // Appears in region 3 and 2 less than 10 times
"regions50": ["1"] // Appears in region 1 between 10 and 50 times
}
然后,您可以使用权重评分配置文件来提升在较高计数区域中匹配的文档:
"scoringProfiles": [
{
"name": "boostRegions",
"text": {
"weights": {
"regions10": 1,
"regions50": 2,
"regions100": 3
}
}
}
如果您需要根据区域数量进行严格排序,这不是一个好的解决方案,您无法预先计算区域计数,或者整个值范围很大(例如0到2 ^ 31),而各个存储桶需要要小(你最终会得到太多的字段)。
您遇到的问题是数据建模问题。您正在尝试根据文档的属性检索文档,即文档是否包含一组区域中的区域,但是根据区域的属性而不是文档对文档进行评分/提升。您必须在索引中为每个文档区域对创建一个文档,该文档具有给定文档在该区域中出现的次数。