繁体   English   中英

在地图功能中使用多值字段

[英]Using multivalued field in map function

我正在努力在一个项目中实施Solr,现在我被困在一个包含arr字段的特定搜索中。 事情是:

我想在一个对象上搜索子ID,这些子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 ... *

谢谢!

...看起来函数查询不适用于多值字段...

http://lucene.472066.n3.nabble.com/Using-multivalued-field-in-map-function-td3318843.html#a3322023

函数查询不适用于多值字段。 http://wiki.apache.org/solr/FunctionQuery#Vector_Functions

在以下情况下,是否有人对如何查询所需数据有更好的想法?

我有一个满是博客文章的网站,每个博客文章都有一个所有者,该所有者通过其ID进行引用。 例如:BloggerId =123。博客中也可能有多个共同作者,那里也被BloggerId引用,但是这些ID存储在多值字段中,在我的上一个示例SubIds中。

搜索特定博客作者时,会搜索BloggerId。 搜索结果受许多变量,国家/州/更具体的地质数据,博客类别等影响。为此,我使用分面查询。 接下来,我想使一些结果更重要,具体取决于BloggerId,我尝试通过以下查询进行操作:

?q = {!func} map(sum(map(BloggerId,12304,12304,2,0),map(BloggerId,12304,12304,1,0)),3,3,2)&fl = *,得分&facet。 field = Country&f.Country.facet.limit = 6&facet.field = State&fq =(BlogCategory:internet%20OR%20BlogCategory:sports&sort = score%20desc,Top%20desc,%20SortPriority%20asc&start = 0&omitHeader = true

在结果列表中,由BloggerId 12304撰写的博客应位于列表的顶部,然后是由BloggerId 12304共同撰写的博客。 之后,所有其他符合条件但未由BloggerId 12304撰写(或共同撰写)的博客。

也许我可以使这个多值字段成为一个字符串字段(其中ID用“;”分隔)并查询我的值,但是如果有人有更好的主意,那就永远欢迎您!

最后,我选择添加一个带有空格的字符串值字段以分隔不同的值。 之后,我使用solr.WhitespaceTokenizerFactory类快速扫描字符串以查找特定ID的出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM