zoukankan      html  css  js  c++  java
  • 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 result
    		TopDocs 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来搞定。

  • 相关阅读:
    vuex2 mapActions 报错 `unknown action type: xxxx`
    IE报vuex requires a Promise polyfill in this browser问题解决
    vue路由懒加载
    vue-router各个属性的作用及用法
    JS实现继承的几种方法
    ES6学习笔记--promise对象
    jQuery--data()方法
    原生js实现二级联动下拉列表菜单
    sql server中部分函数功能详解
    js中字符串转换为数值的两种方法的区别
  • 原文地址:https://www.cnblogs.com/likehua/p/2730192.html
Copyright © 2011-2022 走看看