使用 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);
本文来自周建军的技术博客,转载请标明出处。