我工作在一个项目实施的Solr而现在我被困在一个特定的搜索包括ARR场使用多值字段。问题是:在地图功能
我想搜索的子标识的对象上,这些子ID是存储在一个多值字段,如:
<arr name="SubIds">
<int>12272</int>
<int>12304</int>
<int>12306</int>
</arr>
查询(或查询的一部分)我想要使用如下: map(SubIds,i,i,1,0)
例如,当我在上面的map函数的'i'空间填充12304时,我会期待我的函数返回1.如果我输入12345,它应该返回0.事情是,当我运行这个查询时,它返回0,或“没有数字12304在这个字段中,我返回0”。
当从我的地图功能删除0我可以看到实际的价值退还给我(12304时返回1,当不同的返回值),在这种情况下,这是12306!我已经尝试了一些不同的多值字段,但结果是一样的;它看起来像函数检查多值字段中的最后一个值与我填充的ID相对应。
这是真的吗?如果是这样,有没有办法查看整个arr,并且只有在整个多值域中不存在该值时才返回0?
** 编辑:这只是一个预感,但它可能是当map()函数看到所有项目都是int类型(例如)时自动命令arr列表。这可能意味着该地图返回的第一个数字(最高),这将(在我的例子中)是12306,而不是12304 ... *
谢谢!
这是什么map()函数?谁实施了,以及对SOLR进行了哪些查询?你正在使用分面来计算SubIds中的值? 你能分享这个地图功能吗? – Dorin
这是标准的地图功能,可以用来查询...有关地图()的更多信息,请查看官方网站:http://wiki.apache.org/solr/FunctionQuery#map – tkamphuis
对SOLR的完整查询是如下所示: ?q = {!func} map(SubIds,12304,12304,1,0)&fl = *,score&sort = score%20desc 这是什么意思,说我用faceting来计数SubIds?有没有办法对SubIds arr中的不同值进行求和?这将节省我的一天... – tkamphuis