Ne benim Lucene sorgu nesi var?

1 Cevap php

Ben neredeyse tam normale Lucene aynıdır Zend_Search_Lucene, koşuyorum. Benim Lucene endeksinde mağaza tutuyorum ve bu tutuyorlar:

id of store for sql - 'store_id' of field type keyword

name of store - 'name' of field type text

latitude of store - 'lat' of field type keyword

longitude of store - 'lng' of field type keyword

Ben sadece veritabanında test etmek için bir mağaza var. Bu adı "süper harika store", bir 73,9 lat 11 endeksi, ve 40,6 LNG vardır vardır. Olması gerektiği gibi Ancak sonuçlar çalışmıyor.

İşte çalışmıyor benim sorguları birinin bir örnek:

(Adı: 'Awesom *') VE enlem: [-74,486951 TO -73,486951] VE Ing: [41,256054 40,256054 TO]

* Temsil "ve sonra da istediğiniz şey" gerekiyordu, ve mağaza dönmeyecektir. Ben ismini "müthiş *" yaparsanız, doğru dönecektir. Ben awesomatic / korku / etc arama yapmak için nasıl bilmiyorum.

Benim diğer sorun lat ve lng arama ya çalışmıyor olmasıdır. Onlar ne olursa olsun lat veya LNG yayılma, önemli görünmüyor. Ben çin lat / LNG koymak bile, sürece isim eşleşti gibi, bu sonucu verir. Ben o lat ve lng onların doğru sınırlarda ise sadece sonuca dönmek gerekir.

Ben yanlış ne yapıyorum?! Lütfen yardım edin!

1 Cevap

Please see this question about geo-search in Lucene. I believe indexing and searching float values will not work. Try Making these large, zero padded integers. e.g.

lat:[-74486951 TO -73486951]

Bu performans açısından zararlı bir etkisi var, yani daha düşük bir çözünürlük kullanarak düşünün, ya da (Zend Lucene sürümlerinde biraz arkasında Java Lucene içinde indeksleme boylam ve enlem verileri anlatılır ki, This question bazı teknikler kullanabilirsiniz , bu yüzden) eski malzeme kullanmayı deneyin.