lucene2.0学习文档九

2.多域搜索 MultiFieldQueryParser

1.如果想输入关键字而不想关心是在哪个Field里的就可以用MultiFieldQueryParser了。
用它的构造函数即可后面的和一个Field一样。
MultiFieldQueryParser. parse (String[] queries, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer)

第三个参数比较特殊这里也是与以前lucene1.4.3不一样的地方,看一个例子就知道了。
String[] fields = {"filename", "contents", "description"};
BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD,
BooleanClause.Occur.MUST,//在这个Field里必须出现的
BooleanClause.Occur.MUST_NOT};//在这个Field里不能出现
MultiFieldQueryParser.parse("query", fields, flags, analyzer);
2.多索引搜索 MultiSearcher
在构造的时候传进去一个Searcher数组即可

3.过滤器Filter

看个例子:
public void FilterTest() throws IOException, ParseException {
IndexWriter indexWriter = new IndexWriter("C:\\FilterTest",new StandardAnalyzer(),true);
Document doc = new Document();
doc.add(new Field("name","程序员之家",Field.Store.YES,Field.Index.TOKENIZED));
indexWriter.addDocument(doc);
doc=new Document();
doc.add(new Field("name","程序员杂志",Field.Store.YES,Field.Index.TOKENIZED));
indexWriter.addDocument(doc);
indexWriter.close();
Query query = null;
Hits hits = null;
IndexSearcher indexSearcher = new IndexSearcher("C:\\FilterTest");
QueryParser queryParser = new QueryParser("name",new StandardAnalyzer());
query = queryParser.parse("程序");
hits = indexSearcher.search(query,new Filter(){
@Override
public BitSet bits(IndexReader reader) throws IOException{
BitSet bit = new BitSet(reader.maxDoc());
for(int i=0;i< reader.maxDoc();i++){
if(reader.document(i).get("name").enth("杂志"))//将以“杂志”后缀的过滤掉
continue;
bit.set(i);ks
}
return bit;
}
});
System.out.println(hits.length());
for(int i=0;i< hits.length();i++){
doc =hits.doc(i);
System.out.println(doc.get("name"));
}
}
这只是一个入门的文档Lucene 2.0的内容还有很多,这里只是介绍了一部分,其它的可以看帮助文档来学习。

lucene的9次博文全部转自:http://hi.baidu.com/liyihz2008/blog/item/34d81cf253cdbf5a342acc4a.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值