基於位置的搜索我的Lucene索引得到了索引的緯度和經度字段如下:空間查詢使用Lucene的
doc.Add(new Field("latitude", latitude.ToString() , Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.Add(new Field("longitude", longitude.ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
我想從這個指標,其lat和長值是在給定的檢索文檔集範圍。如你所知,Lat和long可能是負值。我如何正確地在Lucene中存儲帶符號的十進制數字? 下面提到的方法會給出正確的結果還是有任何其他方式來做到這一點?
Term lowerLatitude = new Term("latitude", bounds.South.ToString());
Term upperLatitude = new Term("latitude", bounds.North.ToString());
RangeQuery latitudeRangeQuery = new RangeQuery(lowerLatitude, upperLatitude, true);
findLocationQuery.Add(latitudeRangeQuery, BooleanClause.Occur.SHOULD);
Term lowerLongitude = new Term("longitude", bounds.West.ToString());
Term upperLongitude = new Term("longitude", bounds.East.ToString());
RangeQuery longitudeRangeQuery = new RangeQuery(lowerLongitude, upperLongitude, true);
findLocationQuery.Add(longitudeRangeQuery, BooleanClause.Occur.SHOULD);
此外,我想知道Lucene的ConstantScoreRangeQuery如何比RangeQuery類更好。
現在面臨這方面的另一個問題: 我在用下面的3個城市索引的文件之一:
里昂,IL
奧克布魯克,IL
舊金山,加利福尼亞州
如果我給「Lyons,IL」然後這個記錄出現。 但是,如果我給舊金山,CA作爲輸入,那麼它不會。
但是,如果我保存城市的這些文獻資料如下:
舊金山,CA
里昂,IL
奧克布魯克,IL
當我以CA的舊金山作爲輸入,然後將此記錄顯示在搜索結果中。
什麼,我想在這裏的是,如果我輸入任何輸入的3個城市,我應該在搜索結果中得到這個文件。
請幫我實現這一點。
謝謝。
這真是3個不同的問題。你爲什麼不分割它? – itsadok 2009-06-28 07:01:20
這裏。我爲你做了第一步:http://stackoverflow.com/questions/1054719 – itsadok 2009-06-28 11:01:19