lucene旁路解析器用于搜索?

时间:2010-09-28 09:33:39

标签: lucene.net

我认为不需要,但我很好奇

而不是生成查询字符串并用它搜索lucene(ex“tag:abc 123 id:(2或99或123)”)我可以构建一个struct / class并将其传入吗?

使用lucene.net

1 个答案:

答案 0 :(得分:1)

您的意思是直接使用查询API吗?

如果是,请查看BooleanQueryhttp://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方法之一。