2009-10-02 1 views
1

У меня есть 5 записей в индексе Lucene.Помогла вам подобрать соответствующие записи с самой последней датой

  • a.Record 1 содержит - налог значение поля analysis.Date март 2009

    b.Record 2 содержит - старший налог значение поля analyst.Date является август 2009

    c.Record 3 содержит - старший налог значение поля analyst.Date является июль 2009

    d.Record 4 содержит - налог analyst.Date значение поля февраля 2009

    e.Record 5 содержит - старший налог значение поля analyst.Date является октябрь 2009

Если вход ключевое слово старший налоговый аналитик, затем искать результаты должны прийти в следующем порядке:

  • a.Record 5 - потому что эта запись имеет самую последнюю дату и имеет получил соответствующий фразу

    b.Record 2 - потому что эта запись имеет получил вторую самую последнюю дату и имеет получил соответствующий фразу

    c.Record 3 - потому что эта запись имеет получил третью самую последнюю дату и имеет получил Фразовое

    d.Record 4

    e.Record 1

в принципе, я хочу, чтобы показать наиболее релевантные записи группы по дате и отсортировано по убыванию по дате. Затем я хочу показать оставшиеся записи, отсортированные по убыванию значения релевантности. Как достичь этого с Lucene?

Пожалуйста, помогите.

Спасибо за чтение.

+0

Почему вы не приняли ответ Юваля? –

ответ

2

Я считаю, что вы можете сделать это, сначала собирая результаты поиска, а затем сортируя их с помощью CustomSorter. This blog entry объясняет пользовательскую сортировку в Lucene Java. Вы должны перевести это на .Net, используя .Net's ScoreDocComparator. Ваш метод compare() должен будет получить поля даты из документов и сравнить их. Сначала я попытался бы получить правильный порядок для точных совпадений (записи 5, 2 и 3). Позже вы также можете использовать матч в своем компараторе. Вы можете обобщить мой ответ на this question, чтобы сделать это.