我认为不需要,但我很好奇
而不是生成查询字符串并用它搜索lucene(ex“tag:abc 123 id:(2或99或123)”)我可以构建一个struct / class并将其传入吗?
使用lucene.net
答案 0 :(得分:1)
您的意思是直接使用查询API吗?
如果是,请查看BooleanQuery
:http://lucene.apache.org/java/2_9_3/api/core/index.html
如果你查看Lucene.Net.Search
命名空间,你会发现很多查询类,然后使用BooleanQuery类来组合它们
BooleanQuery mainQuery = new BooleanQuery();
// add terms to the query
mainQuery.Add(new TermQuery(new Term("tag", "abc")), BooleanClause.Occur.MUST);
mainQuery.Add(new TermQuery(new Term("tag", "123")), BooleanClause.Occur.MUST);
// for the parentheses, do a sub BooleanQuery
BooleanQuery idQuery = new BooleanQuery();
idQuery.Add(new TermQuery(new Term("id", "2")), BooleanClause.Occur.SHOULD);
idQuery.Add(new TermQuery(new Term("id", "99")), BooleanClause.Occur.SHOULD);
idQuery.Add(new TermQuery(new Term("id", "123")), BooleanClause.Occur.SHOULD);
// append subquery to the main
mainQuery.Add(idQuery, BooleanClause.Occur.MUST);
然后将mainQuery
对象传递给参数中带有查询的Searcher
方法之一。