2012-01-10 40 views
0

有沒有一種方法可以基於構面字段的子字符串獲取構面計數,類似於EdgeNGram?Solr - 基於可變精度地理哈希使用構面求和文檔


我使用Solr的存儲在高精度地理散列字符串,並希望在一定的地理散列精確計數的文檔數。小平面用於計算特定geohash「單元格」中的文檔。

目前,我能看到做到這一點的唯一方法是使用geohashes層。

例如。當前面的結果集(從索引數據):

<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> 

乾杯。

回答

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。

祝你好運,保持聯繫。

+0

是一個熱圖 - 它在一個!這很好。這意味着我的索引有點笨重(我用一個單獨的正則表達式匹配做每個前綴 - 不知道這是否是最好的方式??)。在那個筆記上,有沒有一種簡單的方法來獲得solr來計算geohash並使其可用於刻面或必須提供? – Sensai 2012-01-12 00:46:48

+0

Solr內置了GeoHashField的地理散列,但沒有長度前綴。我不明白你是如何或爲什麼使用正則表達式;只需計算字符串的長度並在十六進制中加上即可。我會將所有這些邏輯放入UpdateRequestProcessor中,並將字段索引爲String。 – 2012-01-12 16:06:51