如何在一次搜索中组合多个过滤器?
例如,我有可分析字段标题的记录,而不是可分析字段 id1 , id2 , id3 ,的 RELEASE_DATE 即可。我想找到使用id1,id2,id3和release_date的特定过滤器的所有记录;所以,我有:
RangeFilter refReleaseDateFilter = new RangeFilter("release_date",
refFromDateTimeTerm.Text(), refToDateTimeTerm.Text(), true, true);
RangeFilter refId1Filter = new RangeFilter("id1",
refFromId1Term.Text(), refToId1Term.Text(), true, true);
RangeFilter refId2Filter = new RangeFilter("id2",
refFromId2Term.Text(), refToId2Term.Text(), true, true);
RangeFilter refId3Filter = new RangeFilter("id3",
refFromId3Term.Text(), refToId3Term.Text(), true, true);
但是 IndexSearcher 类的方法搜索不提供过滤器数组。
请帮帮我:)谢谢!:)
答案 0 :(得分:3)
您可以使用类似ChainedFilter的内容
见:http://lucene.apache.org/java/2_9_0/api/contrib-misc/org/apache/lucene/misc/ChainedFilter.html
在lucene的.net发行版中还有一个ChainedFilter。
http://www.koders.com/csharp/fidB8682543372DDC9772496D453F39957A94E58466.aspx?s=system#L3
另一种选择是将它实现为java应用程序的端口,而不是那么多代码。