Lucene.net中的多个过滤器

时间:2011-07-04 10:52:37

标签: search filter lucene.net

如何在一次搜索中组合多个过滤器?

例如,我有可分析字段标题的记录,而不是可分析字段 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 类的方法搜索不提供过滤器数组。

请帮帮我:)谢谢!:)

1 个答案:

答案 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应用程序的端口,而不是那么多代码。