Lucene3.6 之 Filter
来源:互联网 发布:手机淘宝怎么买彩票 编辑:程序博客网 时间:2024/05/21 07:51
1、TermRangeFilter
A Filter that restricts search results to a range of term values in a given field.
This filter matches the documents looking for terms that fall into the supplied range according to Byte.compareTo(Byte), It is not intended for numerical ranges; use NumericRangeFilter instead.
If you construct a large number of range filters with different ranges but on the same field, FieldCacheRangeFilter may have significantly better performance.
示例代码
@Testpublic void testTermRangeFilter(){try {String path = "D:\\LuceneEx\\day01";String keyword = "android";File file = new File(path);Directory mdDirectory = FSDirectory.open(file);// 使用 商业分词器Analyzer mAnalyzer = new IKAnalyzer();IndexReader reader = IndexReader.open(mdDirectory);IndexSearcher searcher = new IndexSearcher(reader);String[] fields = { "title", "category" }; // (在多个Filed中搜索)QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_36,fields, mAnalyzer);Query query = parser.parse(keyword);//查询publishTime范围在2011-09 - 2012-06之间的记录Filter filter = new TermRangeFilter("publishTime", "2011-09", "2012-06", true, true);TopDocs tops = searcher.search(query, filter, 100);int count = tops.totalHits;System.out.println("totalHits=" + count);ScoreDoc[] docs = tops.scoreDocs;for (int i = 0; i < docs.length; i++) {Document doc = searcher.doc(docs[i].doc);float score = docs[i].score;int id = Integer.parseInt(doc.get("id"));String title = doc.get("title");String author = doc.get("author");String publishTime = doc.get("publishTime");String source = doc.get("source");String category = doc.get("category");float reputation = Float.parseFloat(doc.get("reputation"));System.out.println(id + "\t" + title + "\t" + author + "\t"+ publishTime + "\t" + source + "\t" + category + "\t"+ reputation+"\t"+score);}reader.close();searcher.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();}}
2、NumericRangeFilter
A Filter that only accepts numeric values within a specified range. To use this, you must first index the numeric values using IntField, FloatField, LongField or DoubleField (expert: NumericTokenStream).
示例代码
@Testpublic void testNumericRangeFilter(){try {String path = "D:\\LuceneEx\\day02";String keyword = "android";File file = new File(path);Directory mdDirectory = FSDirectory.open(file);// 使用 商业分词器Analyzer mAnalyzer = new IKAnalyzer();IndexReader reader = IndexReader.open(mdDirectory);IndexSearcher searcher = new IndexSearcher(reader);String[] fields = { "title", "category" }; // (在多个Filed中搜索)QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_36,fields, mAnalyzer);Query query = parser.parse(keyword);//过滤 reputation 在9.0f到 9.8 分之间 的记录Filter filter = NumericRangeFilter.newFloatRange("reputation", 9.0f, 9.8f, true, true);TopDocs tops = searcher.search(query, filter, 100);int count = tops.totalHits;System.out.println("totalHits=" + count);ScoreDoc[] docs = tops.scoreDocs;for (int i = 0; i < docs.length; i++) {Document doc = searcher.doc(docs[i].doc);float score = docs[i].score;int id = Integer.parseInt(doc.get("id"));String title = doc.get("title");String author = doc.get("author");String publishTime = doc.get("publishTime");String source = doc.get("source");String category = doc.get("category");float reputation = Float.parseFloat(doc.get("reputation"));System.out.println(id + "\t" + title + "\t" + author + "\t"+ publishTime + "\t" + source + "\t" + category + "\t"+ reputation+"\t"+score);}reader.close();searcher.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();}}
- Lucene3.6 之 Filter
- Lucene3.6 之 Filter
- Lucene3.6 之 查询篇
- Lucene3.6 之 排序篇
- Lucene3.6之索引CRUD
- 【Lucene3.6.2入门系列】第07节_高级搜索之普通Filter和自定义Filter
- 【Lucene3.6.2入门系列】第07节_高级搜索之普通Filter和自定义Filter
- lucene3.6
- Lucene3.6入门实例
- Lucene3.6总结篇
- Lucene3.6小例子
- lucene3.6查询TopDocs
- 传智播客之Lucene3.0详解
- lucene3.6.2之自定义评分
- Lucene3.6demo小试
- lucene3.6全文检索word2007
- Lucene3.0之索引:开篇 操作 实例
- Lucene3.5 之 索引删除和更新
- struts.xml 跳转到.action配置
- VC++:结合设备安装类GUID和设备接口类GUID获取设备VIDPID
- 使用vs2008制作dll文件,生成动态链接库
- eclipse shelled 安装
- 数据结构C语言版基础操作(1)
- Lucene3.6 之 Filter
- 编程命名规则
- ThinkPHP学习笔记(八)一个用户增删改查的小例子
- JavaScript入门代码整理
- 组合的C语言实现
- pvbrower Q&A
- js 实现 鼠标 移动 div
- Java串行端口通讯技术慨论
- 单选按钮