Java检索指定数字范围_(六)lucene之其他查询方式(组合查询,制定数字范围、指定字符串开头)...

packagecom.shyroke.test;importjava.io.IOException;importjava.nio.file.Paths;importorg.apache.lucene.analysis.Analyzer;importorg.apache.lucene.analysis.standard.StandardAnalyzer;importorg.apache.lucene.document.Document;importorg.apache.lucene.document.Field;importorg.apache.lucene.document.IntField;importorg.apache.lucene.document.StringField;importorg.apache.lucene.index.DirectoryReader;importorg.apache.lucene.index.IndexReader;importorg.apache.lucene.index.IndexWriter;importorg.apache.lucene.index.IndexWriterConfig;importorg.apache.lucene.index.Term;importorg.apache.lucene.search.BooleanClause;importorg.apache.lucene.search.BooleanQuery;importorg.apache.lucene.search.IndexSearcher;importorg.apache.lucene.search.NumericRangeQuery;importorg.apache.lucene.search.PrefixQuery;importorg.apache.lucene.search.ScoreDoc;importorg.apache.lucene.search.TopDocs;importorg.apache.lucene.store.Directory;importorg.apache.lucene.store.FSDirectory;importorg.junit.Before;importorg.junit.Test;public classIndexTest {private Integer ids[]={1,2,3};private String citys[]={"aingdao","banjing","changhai"};private String descs[]={"Qingdao is a beautiful city.","Nanjing is a city of culture.","Shanghai is a bustling city."};privateIndexReader reader;privateIndexSearcher searcher;private String indexDir="E:\\lucene5\\index";

@Beforepublic void setUp() throwsIOException {

IndexWriter indexWriter=getIndexWiter();for (int i = 0; i < ids.length; i++) {

Document document= newDocument();

document.add(new IntField("id", ids[i], Field.Store.YES));

document.add(new StringField("city", citys[i], Field.Store.YES));

document.add(new StringField("desc", descs[i], Field.Store.NO));

indexWriter.addDocument(document);

}

indexWriter.close();

Directory dir=FSDirectory.open(Paths.get(indexDir));

reader=DirectoryReader.open(dir);

searcher=newIndexSearcher(reader);

}/*** 实例化IndexWiter

*

*@return*@throwsIOException*/

private IndexWriter getIndexWiter() throwsIOException {

Directory dir=FSDirectory.open(Paths.get(indexDir));

Analyzer analyzer= newStandardAnalyzer();

IndexWriterConfig conf= newIndexWriterConfig(analyzer);

IndexWriter indexWriter= newIndexWriter(dir, conf);returnindexWriter;

}/*** 指定数字范围,其中id必须是整型的,如:document.add(new IntField("id", ids[i], Field.Store.YES));

* newIntRange方法第二、三个参数是查询的起点值和终点值,即区间,最后两个参数是指是否包含起点值和终点值。

*@throwsException*/@Testpublic void testNumericRangeQuery()throwsException{

NumericRangeQuery query=NumericRangeQuery.newIntRange("id", 1, 2, true, true);

TopDocs hits=searcher.search(query, 10);for(ScoreDoc scoreDoc:hits.scoreDocs){

Document doc=searcher.doc(scoreDoc.doc);

System.out.println(doc.get("id"));

System.out.println(doc.get("city"));

System.out.println(doc.get("desc"));

System.out.println("---------------------");

}

}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值