我在我的Lucene索引上使用MultiFieldQueryParser
在2个字段上进行自由文本搜索,这工作正常。下面是我如何我建立的搜索查询:Lucene - 结合多字段查询与布尔查询
var searchParser = new MultiFieldQueryParser(_currentLuceneVersion, new[] { _titleField, _bodyField }, _standardAnalyzer);
Query searchQuery = searchParser.Parse(searchText);
我现在已经添加了一个新的领域,这是一个布尔值(1或0作为字符串),我想我原来的搜索做的一个布尔值过滤器原创自由文本搜索。
我认为这必须使用BooleanQuery
完成,然后与原始MultiFieldQueryParser
和新BooleanQuery
结合使用。
这样做是否正确?
您还可以回复创建'QueryFilter',并给它'Search'方法 – 2012-02-01 11:32:09
谢谢,你能不能给我一个这样的例子? – jcvandan 2012-02-01 13:57:54
像LB说过的,我会构建2个QueryFilters,一个用于0,另一个用于1.然后,让它们保留并重新使用它们。只有在索引更改时,您才需要重建过滤器。 QueryFilter缓存匹配的文档,所以你应该看到使用简单的布尔查询子句 – 2012-02-01 14:02:38