Lucene.NET多字段 多条件搜索


使用 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);


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

你可能感兴趣的:(Lucene)