Lucene之拉框查询

Lucene之拉框查询

使用lucene做拉框查询 最简单不过了 直接看代码:

private List<Document> spatialQuery0(String keyword,double minx,double miny,double maxx,double maxy){List<Document> lst=new ArrayList<Document>();try{File f=new File(heath_index_path);if(!f.exists()){f.mkdirs();}Directory d=FSDirectory.open(f);Analyzer a=new IKAnalyzer();IndexSearcher searcher=new IndexSearcher(d, true);BooleanQuery query=new BooleanQuery();//xx 关键字Query word=new QueryParser(Version.LUCENE_30, “comp_name”, a).parse(keyword);//x 经度//NumericRangeQuery t1=ne//new NumericRangeQuery(“x”, “80.0”, “120.0”, true, true);NumericRangeQuery<Double> lon=NumericRangeQuery.newDoubleRange(“x”, 8, minx, maxx, true, true);//new NumericRangeQuery<Double>(“y”,8,32,new Double(80.0),new Double(120.0),true,true);//NumericRangeQuery<Number>//y 维度NumericRangeQuery<Double> lat=NumericRangeQuery.newDoubleRange(“y”, 8, miny, maxy, true, true);//new TermRangeQuery(“y”, “10.0”, “40.0”, true, true);query.add(word,Occur.MUST);query.add(lon, Occur.MUST);query.add(lat, Occur.MUST);//query resultTopDocs docs=searcher.search(query, Integer.MAX_VALUE);//docs.//TopDocsCollector<ScoreDoc>//查询所有记录for(int i=0;i<docs.totalHits;i++){Document doc=searcher.doc(docs.scoreDocs[i].doc);//System.out.println(doc.get(“comp_name”));lst.add(doc);}searcher.close();d.close();}catch(Exception e){System.out.println(“查询失败:”+e.toString());}return lst;}

经纬度范围表达 使用NumericRangeQuery 。中文分词使用IKAnalyzer来搞定。

posted on

,香港空间,网站空间,香港虚拟主机在乎的是看风景的心情,旅行不会因为美丽的风景终止。

Lucene之拉框查询

相关文章:

你感兴趣的文章:

标签云: