Lucne:一个开源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎,索引引擎和部分文本分析引擎。
优点:
索引文件独立于应用平台,不受限制,8位字节位基础的索引文件格式,
优秀的面向对象的系统结构。
Lucene:有7个包需要导入,analysis,document,index,queryParser,serch,store,util。
早期搜索的写法:
IndexSearcher searcher= new IndexSearcher("E:/index");
Query query = new TermQuery(new Term("title", "lucene"));//单个
字节查询
//Query query = new
FuzzyQuery
(new Term("title", "lucene"));//模糊查询
//BooleanQuery query = new
BooleanQuery
();//条件查询
//BooleanQuery qson1 = new BooleanQuery();
//Query q1 = new TermQuery(new Term("title", "lucene"));
//qson1.add(q1, Occur.MUST);//
MUST是必须满足的
//BooleanQuery qson2 = new BooleanQuery();
//Query q2= new TermQuery(new Term("sex", "woman"));
//qson2 .add(q2, Occur.MUST_NOT);//
MUST_NOT是必须不满足
//query.add(qson1, Occur.SHOULD);
//query.add(qson2, Occur.SHOULD);//
SHOULD代表满足qson1或者满足qson2都可以
//PhraseQuery query = new
PhraseQuery
();//近距离查询
//query.setSlop(5);//距离设置为5
//query.add(new Term("title", "lucene"));
//query.add(new Term("title", "introduction"));//查询出title中lucene和introduction距离不超过5个字符的结果
//Query query = new
PrefixQuery
(new Term("title", "lu"));//WildcardQuery的lu*一样,通配符查询
//RangeQuery query = new
RangeQuery
(new Term("time", "50"),new Term("time", "60"), true);
//true代表[50,60],false代表(50,60)
Hits hits = searcher.search(query);
for (int i = 0; i < hits.length(); i++) {
Document d = hits.doc(i);
String title= d.get("title");
System.out.print(title+ " ");
}