放逐忧伤

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理


使用 MultiFieldQueryParser 可以指定多个搜索字段。

Query query = MultiFieldQueryParser.Parse("name*", new string[] { FieldName, FieldValue }, analyzer);

IndexReader reader = IndexReader.Open(directory);

IndexSearcher searcher = new IndexSearcher(reader);

Hits hits = searcher.Search(query);

多条件搜索

除了使用 QueryParser.Parse 分解复杂的搜索语法外,还可以通过组合多个 Query 来达到目的。

Query query1 = new TermQuery(new Term(FieldValue, "name1")); // 词语搜索

Query query2 = new WildcardQuery(new Term(FieldName, "name*")); // 通配符 

//Query query3 = new PrefixQuery(new Term(FieldName, "name1")); // 字段搜索 Field:Keyword,自动在结尾添加 *

//Query query4 = new RangeQuery(new Term(FieldNumber, NumberTools.LongToString(11L)), new Term(FieldNumber, NumberTools.LongToString(13L)), true); // 范围搜索

//Query query5 = new FilteredQuery(query, filter); // 带过滤条件的搜索

 

BooleanQuery query = new BooleanQuery();

query.Add(query1, BooleanClause.Occur.MUST);

query.Add(query2, BooleanClause.Occur.MUST);

 

IndexSearcher searcher = new IndexSearcher(reader);

Hits hits = searcher.Search(query);

本文来自周建军的技术博客,转载请标明出处。

posted on 2011-07-21 10:46  放逐忧伤  阅读(757)  评论(0编辑  收藏  举报