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来搞定。

  • 相关阅读:
    java 日期格式 毫秒 表示方法
    Java的框架是什么意思
    圣思源Java视频36节练习源码分享(自己的190+行代码对比老师的39行代码)
    预装win8的笔记本如何重装win7
    Word 2013 无法撤销操作的错误
    面试经验分享(跳槽季~~~❀)
    一些可能有点用处的C#开发经验
    电子设计解决方案透视
    突破限速
    当区块链遇上Rust
  • 原文地址:https://www.cnblogs.com/likehua/p/2730192.html
Copyright © 2011-2022 走看看