2012-09-21 11 views
5

I Solr için bir şema geliştirmek için üçüncü taraf kodlayıcı ödenen ama şimdi bir kendimi anlama fazlasına sahip olduğu bir soru var.Doğru yolu Solr

<field name="latlng" type="location" indexed="true" stored="false" /> 
<field name="latlng_0_coordinate" type="double" indexed="true" stored="false" /> 
<field name="latlng_1_coordinate" type="double" indexed="true" stored="false" /> 

Sitem JSON yoluyla göndereceğim lat_lng_0_coordinate ve latlng_1_coordinate için ama hiçbir şey LatLng teslim alır: my şemada Bunu alabilir bu yüzden

amacı mekânsal arama yapmaktır. onun orada bildiğim kadarıyla gördüğünüz gibi bir birleştirmek veya katılmak işlevi yoktur gibi değil bu yüzden

Dahası, benim schema.xml içinde "latlng" başka hiçbir söz yoktur.

Yani, benim sorum, bir amacı var latlng yapar veya kodlayıcı yanlışlıkla onu içine koydu?

cevap

5

EnlBoy alan türü konumu olarak tanımlanır. Konum alanının tanımı aşağıdaki gibidir.

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

O _coordinate sonek ile dinamik alanlar oluşturmak için gereklidir.

Örneğinizde, lattitude alanı için latlng_0_coordinate ve boylam alanı için latlng_1_coordinate kullanılmalıdır.

Daha sonra Mekansal sorguları kullanarak latlng alanını kullanabilirsiniz. Örneğin, 5km içindeki en yakın yerleri verilen nokta ile bulmak için aşağıdaki sorguyu kullanabilirsiniz. Örneğin; 41,431, 28,431 yazdım sadece rastgele yerlerdir.

{!geofilt sfield=latlng}&pt=41.431,28.431&d=5 

Sonuç olarak, bu bir hata değildir, amaç için hazırdır.

Solr docs Ayrıca bakınız: https://wiki.apache.org/solr/SpatialSearch#QuickStart

+0

Süper size o Km olacağını d parametre değerine bahsedilen Parvin, @ –

+0

teşekkür ?? Ben mil cinsinden olan bazı yerlerde okudum. – NamingException