zoukankan      html  css  js  c++  java
  • 查询

    【精确匹配】

     1     /**
     2      * 实现精确匹配
     3      */
     4     public void searchByTermQuery(String path,int count,String key){
     5         IndexSearcher searcher = null;
     6 
     7         try {
     8             //创建IndexReader
     9             IndexReader reader = util.getReader(getDirectory(path));
    10             
    11             //创建Search
    12             searcher = new IndexSearcher(reader);
    13             
    14             //4、创建Query
    15             Query query = new TermQuery(new Term("author",key));
    16             
    17             //5、创建TocDocs
    18             TopDocs td= searcher.search(query, count);    
    19             System.out.println("总计:" + td.totalHits + "条");
    20             
    21             //6、创建ScoreDoc
    22             ScoreDoc[] sds = td.scoreDocs;
    23             
    24             //7、处理文档对象
    25             for(ScoreDoc sd : sds){
    26                 //表示分词所在的文档对象
    27                 Document doc = searcher.doc(sd.doc);
    28                 
    29                 //输出文档的信息
    30                 System.out.println(doc.get("id") + " | " + doc.get("author") + " | " + doc.get("title") + " | " + doc.get("size"));
    31             }
    32         } catch (IOException e) {
    33             // TODO Auto-generated catch block
    34             e.printStackTrace();
    35         }
    36         finally{
    37             try {
    38                 searcher.close();
    39             } catch (IOException e) {
    40                 // TODO Auto-generated catch block
    41                 e.printStackTrace();
    42             }
    43         }
    44     }

    精确匹配通过TermQuery进行实现。相当于Sql中的等值比较。

    【范围匹配】

    1         //参数(属性名,起始范围,结束范围,是否包含开始区间,是否包含结束区间)
    2         //无法对数值类型数据进行匹配
    3         Query query = new TermRangeQuery("title",lower,supe,true,true);
    4         query(query, path,count);

    范围匹配对数字无效。相当于Sql中的bewteen查询。

    【数字范围匹配】

    1         //对数值范围进行匹配
    2         Query query = NumericRangeQuery.newIntRange("size",min,max,true,true);
    3         query(query, path,count);

    相当于Sql中的between。

    【前缀匹配】

    1         //检索有所以指定内容开头的所有数据
    2         Query query = new PrefixQuery(new Term("author", prefix));
    3         query(query,path,count);

    相当于Sql中的 like '值%'。

    【通配符匹配】

    1         //查询内容中需要使用通配符
    2         Query query = new WildcardQuery(new Term("content", key));
    3         query(query,path,count);

    【多条件查询】

    1         BooleanQuery query =  new BooleanQuery();
    2         //添加匹配条件
    3         //MUST            :必须存在的,相当于&&(并且)
    4         //SHOULD        :非必须存在的,相当于||(或者)
    5         //MUST_NOT:一定不存在,相当于!(非)
    6         query.add(new TermQuery(new Term("author",author)),Occur.SHOULD);
    7         query.add(new TermQuery(new Term("content",content)),Occur.MUST_NOT);
    8         //执行查询
    9         query(query,path,count);

    【短语查询】

    1         PhraseQuery query = new PhraseQuery();
    2         //设置条数
    3         query.setSlop(slop);
    4         //设置短语的开始关键字
    5         query.add(new Term("content",start));
    6         //设置短语的结束关键字
    7         query.add(new Term("content",end));
    8         
    9         query(query,path,count);

    【模糊查询】

    1         Query query = new FuzzyQuery(new Term("content", key));
    2         
    3         query(query, path,count);

     

    每接触一个新领域,我就像一块掉进水里的海绵,四面八方的养分都让我不断充实。O(∩_∩)O~
  • 相关阅读:
    (七)android开发中两种方式监听短信的原理和实现
    (三)android中Toast的使用
    (二)、Android ListView滑动过程中图片显示重复错位闪烁问题解决
    (一)PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter的区别
    (六)Android中使用CountDownTimer实现倒计时功能
    (五)在android 4.4上设置手机状态栏的背景
    (四)使用PagerSlidingTabStrip和ViewPager实现可左右滑动和点击效果功能
    devexpress表格gridcontrol实现列统计,总计,平均,求和等。
    常用GDB命令行调试命令
    新浪微博SSO授权后回调客户端没有执行sinaweiboDidLogIn&无法返回应用
  • 原文地址:https://www.cnblogs.com/zhzcode/p/9831825.html
Copyright © 2011-2022 走看看