• Lucene使用Filter搜索过滤


     1     /**
     2      * 排序查询
     3      * 
     4      * @param querystr
     5      *            查找匹配的字符串
     6      * @param domain
     7      *            查找内容的域
     8      * @param filter
     9      *            过滤器
    10      */
    11     public void SearchByFilter(String querystr, String domain, Filter filter) {
    12         TopDocs docs = null;
    13         IndexSearcher searcher = this.getSearcher();
    14         try {
    15             QueryParser parser = new QueryParser(Version.LUCENE_35, domain,
    16                     new StandardAnalyzer(Version.LUCENE_35));
    17             Query query = parser.parse(querystr);
    18             if (filter == null) {
    19                 docs = searcher.search(query, 150);
    20             } else {
    21                 docs = searcher.search(query,filter,150);
    22             }
    23 
    24             // 输出信息
    25             ScoreDoc[] sds = docs.scoreDocs;
    26             Document d = null;
    27             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    28             for (ScoreDoc s : sds) {
    29                 d = searcher.doc(s.doc);
    30                 System.out.println(s.doc+"->"
    31                                     +s.score+"->"
    32                                     +d.get("filename")+"->"
    33                                     +d.get("size")+"->"
    34                                     +sdf.format(new Date(Long.valueOf(d.get("date")))));
    35             }
    36 
    37         } catch (ParseException e) {
    38             e.printStackTrace();
    39         } catch (IOException e) {
    40             e.printStackTrace();
    41         }
    42     }
    43     
     1     @Test
     2     public void testFilterSearch(){
     3         
     4         Filter filter=null;
     5         //使用TermRangeFilter进行范围过滤搜索
     6         //1.域   2.起始位置  3.结束位置   4.是否包含起始位置    5.是否包含结束位置   
     7         filter=new TermRangeFilter("filename","chs.a","chs.txt",true,true);
     8         //使用NumericRangeFilter进行过滤
     9         filter=NumericRangeFilter.newIntRange("size", 10, 5000, true, true);
    10         //使用QueryWrapperFilter进行过滤
    11         filter=new QueryWrapperFilter(new WildcardQuery(new Term("filename", "*.ini")));
    12         su.SearchByFilter("中国", "content", filter);
    13     }
  • 相关阅读:
    执行start-dfs.sh后,datenode没有启动的解决办法
    hadoop 在centos中的搭建
    MySQL 5.7的安装及主从复制(主从同步)
    CentOS7 配置免密码登陆
    关于使用maven打包如何聚合资源文件
    idea常用快捷键
    lombok的使用
    oracle 导出,导入表
    vue项目.eslintrc格式化
    vue-cli3项目关闭烦人的代码检测
  • 原文地址:https://www.cnblogs.com/Laupaul/p/2464953.html
Copyright © 2020-2023  润新知