学习Lucene

[b]正在学习lucene中,先贴一小段代码做个记念![/b]

public class FirstDemo {
public static void main(String[] args) throws Exception {
File file = new File("c:\\index");
IndexWriter indexWriter = new IndexWriter(file, new StandardAnalyzer(),
true);
Document document = new Document();
document.add(new Field("name", "word and word", Field.Store.YES,
Field.Index.TOKENIZED));
indexWriter.addDocument(document);
indexWriter.close();

IndexSearcher indexSearcher = new IndexSearcher("c:\\index");
QueryParser queryParser = new QueryParser("name",
new StandardAnalyzer());
Query query = queryParser.parse("word");
Hits hits = indexSearcher.search(query);
System.out.println("查找到" + hits.length() + "个结果");
}
}


1.以下是使用lucene2.0版本后要注意的:
Field没了Keyword、UnIndexed、UnStored、Text这几个静态成员,只能用
Field(String, String, Store, Index)。
Keyword对应Field.Store.YES, Field.Index.UN_TOKENIZED,
UnIndexed 对应Field.Store.YES, Field.Index.NO,
UnStored对应Field.Store.NO, Field.Index.TOKENIZED,
Text对应Field.Store.YES, Field.Index.TOKENIZED。

2.构建各种Query
TermQuery:词条查询
query = new TermQuery(new Term("name", "word1"));
BooleanQuery:与或查询
query = new BooleanQuery();
BooleanClause booleanClause1=new BooleanClause(query1,BooleanClause.Occur.SHOULD);
query.add(booleanClause1);

RangeQuery:范围查询

Term beginTime = new Term("time","200001");
Term endTime = new Term("time","200005");
query = new RangeQuery(beginTime, endTime, false);


PrefixQuery:前缀查询

Term term= new Term("name", "s");
query = new PrefixQuery(term);


PhraseQuery:多关键字搜索

Term word1 = new Term("content", "keep");
Term word2 = new Term("content","moving");
query = new PhraseQuery();
query.add(word1);
query.add(word2);
/*
对两个紧密相连的关键字,无论slop设置多少,Lucene总能找到它所在的文档,而对两个不
紧连的关键字,如果slop小于它们之间无关词的数量,那么则无法找到.其实,当两个关键字之间的无关词数小于等于坡度值时,总是可以被找到.
*/
query.setSlop(0);


FuzzyQuery:模糊查询

Term term= new Term("content", "da");
FuzzyQuery query = new FuzzyQuery(term);


WildcardQuery:通配符查询

//"*"代表0至多个字符,"?"代表1个字符
Term word1 = new Term("content", "*ever");
Term word2 = new Term("content", "wh?ever");
query = new WildcardQuery(word1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值