Несколько фильтров в Lucene.net

Как объединить несколько фильтров в одном поиске?

Например, у меня есть запись с анализируемым полем title и не анализируемыми полями 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);

Но метод Search класса IndexSearcher не предоставляет массив фильтров.

Пожалуйста, помогите мне :) Спасибо! :)


person Edward83    schedule 04.07.2011    source источник


Ответы (1)


Вы можете использовать что-то вроде 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-приложения, это не так уж и много кода.

person fyr    schedule 04.07.2011
comment
fyr спасибо, но, как я понял, ChainedFilter не был реализован в .Net порте Lucene. - person Edward83; 04.07.2011
comment
Я редактировал это со ссылкой на это. По этому поводу также есть несколько сообщений в списках рассылки. - person fyr; 04.07.2011