博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lucene 过滤结果
阅读量:6547 次
发布时间:2019-06-24

本文共 2879 字,大约阅读时间需要 9 分钟。

 

 

1 package cn.itcast.h_filter; 2  3 import java.util.ArrayList; 4 import java.util.List; 5  6 import org.apache.lucene.document.Document; 7 import org.apache.lucene.queryParser.MultiFieldQueryParser; 8 import org.apache.lucene.queryParser.QueryParser; 9 import org.apache.lucene.search.Filter;10 import org.apache.lucene.search.IndexSearcher;11 import org.apache.lucene.search.NumericRangeFilter;12 import org.apache.lucene.search.Query;13 import org.apache.lucene.search.Sort;14 import org.apache.lucene.search.SortField;15 import org.apache.lucene.search.TopDocs;16 import org.apache.lucene.util.Version;17 import org.junit.Test;18 19 import cn.itcast._domain.Article;20 import cn.itcast._util.ArticleDocumentUtils;21 import cn.itcast._util.LuceneUtils;22 23 public class TestApp {24 25     // 搜索26     @Test27     public void testSearch() throws Exception {28         // 准备查询条件29         String queryString = "lucene";30 31         // 执行搜索32         List
list = new ArrayList
();33 34 // 1,把查询字符串转为Query对象(从title和content中查询)35 QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30, new String[] { "title", "content" }, LuceneUtils.getAnalyzer());36 Query query = queryParser.parse(queryString);37 38 // 2,执行查询,得到中间结果39 IndexSearcher indexSearcher = new IndexSearcher(LuceneUtils.getDirectory()); // 指定所用的索引库40 // TopDocs topDocs = indexSearcher.search(query, 100); // 最多返回前n条结果41 42 // ========================================================================================== 【创建高亮器】43 // indexSearcher.search(query, n);44 // indexSearcher.search(query, filter, n);45 // indexSearcher.search(query, filter, n, sort);46 47 Filter filter = NumericRangeFilter.newIntRange("id", 5, 15, false, true); // null表示没有过滤条件 选择 (5,15] 之间的过滤的数据,后面的boolean判断 括号开闭用处的48 TopDocs topDocs = indexSearcher.search(query, filter, 100);49 50 // ==========================================================================================51 52 // 3,处理结果53 for (int i = 0; i < topDocs.scoreDocs.length; i++) {54 // 根据编号拿到Document数据55 int docId = topDocs.scoreDocs[i].doc; // Document的内部编号56 Document doc = indexSearcher.doc(docId);57 // 把Document转为Article58 Article article = ArticleDocumentUtils.documentToArticle(doc);59 list.add(article);60 }61 indexSearcher.close();62 63 // 显示结果64 System.out.println("总结果数:" + list.size());65 for (Article a : list) {66 System.out.println("------------------------------");67 System.out.println("id = " + a.getId());68 System.out.println("title = " + a.getTitle());69 System.out.println("content = " + a.getContent());70 }71 }72 }

 

转载地址:http://jeedo.baihongyu.com/

你可能感兴趣的文章
第18章 使用MariaDB数据库管理系统
查看>>
浅谈MySQL的B树索引与索引优化
查看>>
【喜报】HCIE--PASS !最可怕的敌人,就是没有坚强的信念!
查看>>
想学前端,为什么不看这些书呢?
查看>>
记一次mapreduce读取不到输入文件的问题
查看>>
我的友情链接
查看>>
MariaDB集群Galera Cluster的研究与测试
查看>>
SONY控制键盘JX-11,EVI-D70P控制方案
查看>>
Spring AOP 之二:Pointcut注解表达式
查看>>
在普通台式机上搭建服务器虚拟化架构Esxi平台
查看>>
电话线路 30B+D 名词解释
查看>>
吉炬消费系统软件输入密码后无法打开软件界面故障处理
查看>>
Hibernate学习系列————注解一对多双向实例
查看>>
Cannot load from mysql.proc
查看>>
网络运维之 EX4200消除var分区使用过高的告警
查看>>
【最好的流程是没有流程】
查看>>
Apache Thrift 教程
查看>>
Python Epoll
查看>>
AS3歌词同步详解
查看>>
单例模式
查看>>