Solr - 使用facet基于可变精度geohashes对文档求和

时间:2012-01-10 04:52:03

标签: solr faceted-search geohashing

有没有办法根据facet字段的子字符串获取facet计数,类似于EdgeNGram?


我正在使用solr以高精度存储geohash字符串,并希望以特定的geohash精度计算文档数。构面用于计算特定geohash“单元格”中的文档。

目前,我能看到的唯一方法就是使用地理分层。

例如。当前构面结果集(来自索引数据):

<lst name="facet_counts">
 <lst name="facet_fields">
  <int name="svztdm7w">11</int>
  <int name="sv87rzt8">3</int>
  <int name="sv83t6bf">2</int>
  <int name="syqxp43m">4</int>
  <int name="syr9f0v2">4</int>
  <int name="syp8p8hb">3</int>
  <int name="tuuttmtt">3</int>
  <int name="twj1ynm3">3</int>
  <int name="w30n6u71">3</int>
 </lst>
</lst>

精确1设置我想要的是什么:

<int name="s">27</int>
<int name="t">6</int>
<int name="w">3</int>

我想要的精确2设置:

<int name="sv">16</int>
<int name="sy">11</int>
<int name="tu">3</int>
<int name="tw">3</int>
<int name="w3">3</int>

干杯。

1 个答案:

答案 0 :(得分:0)

我在Solr做过很多关于geohashes的工作;我最近的工作是LSP:http://code.google.com/p/lucene-spatial-playground/,它有各种索引策略,包括geohashes。如果您搜索我的名字和geohash,您会找到各种材料。

听起来你所追求的基本上是一个基于geohash的热图。这是我的TODO列表中的LSP,但与此同时,您可以通过对索引地理数据的索引进行一些操作来获得它。在对您的geohash进行边缘编码后,在geohash前面加上一个前导数字,该数字是geohash的长度。例如,而不仅仅是“16”,索引“216”。使用十六进制表示法,这样您就可以在一个字符中获得16个值,而不是十进制的10.在刻面时,使用facet.prefix = 2.

祝你好运并保持联系。