在Solrj中设置伪字段(fl)

时间:2014-02-25 22:46:54

标签: java solr groovy solrj

我想使用一个伪字段来返回距离我的solr(geo)空间搜索中心的距离,就像这里解释的那样:http://wiki.apache.org/solr/SpatialSearch#geodist_-_The_distance_function当它说:

  

返回距离

     

Solr4.0

     

您可以使用伪字段功能通过向请求添加fl = geodist()来返回距离以及每个文档的存储字段。使用像fl = dist 这样的别名:geodist()来使距离返回到 dist 伪字段中。以下是按距离递增排序并返回 dist 中每个文档的距离的示例。

     

...& q = & sfield = store& pt = 45.15,-93.85& sort = geodist()asc& fl = dist : geodist()

现在,我正在使用solrj(4.5.1),我无法找到正确设置fl=_dist_:geodist()部分的方法。我实际上可以设法将它添加到solrQuery对象中:

solrQuery.setParam('fl', '_dist_:geodist()')

没有编译错误,但由于某种原因,这会弄乱我的返回文档。

任何想法应该怎么做?

聚苯乙烯。代码是groovy语言,不要因单引号中的分号或字符串而烦恼:)

*更新*

如上所述设置fl参数实际上会导致返回仅包含_dist_字段的文档!

1 个答案:

答案 0 :(得分:0)

经过几分钟的搜索,我发现了这篇文章:http://solr.pl/en/2011/11/22/solr-4-0-new-fl-parameter-functionalities-first-look/

它解释了除了所有其他参数之外如何返回新的别名字段,就像这样(请注意*部分):

fl=*,stock:sum(stockMain,stockShop)

因此,在solrj的示例中,它将是:

solrQuery.setParam('fl', '*,_dist_:geodist()')