`
kim_miao
  • 浏览: 188949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习Lucene

阅读更多
正在学习lucene中,先贴一小段代码做个记念!
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);


分享到:
评论
1 楼 moxuan 2009-01-05  
有点简单,学习了!

相关推荐

Global site tag (gtag.js) - Google Analytics