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

你可能感兴趣的:(C++,c,Blog,C#,Lucene)