Не могу найти время модификации для работы - PullRequest
0 голосов
/ 01 декабря 2018

Пример в пакете org.apache.lucene.demo работает для текстового поиска.Но я не могу заставить его работать, используя и отображая время модификации.Кажется, что поле modified обработано, но безуспешно с его использованием.

Выполнено SearchFiles печатает обращения для

Введите запрос:

+kompl*

но здесь ничего нет

+kompl* +modified:[0 TO 9999999999999]

Может кто-нибудь привести пример для этого?

1 Ответ

0 голосов
/ 20 декабря 2018

Я ошибочно полагал, что атрибуты файла как-то неявно доступны для меня.Но хорошо, я должен был сделать это сам.

Для индексации я добавил простое целое число

  // provide stored date integer to query for [yyyymmdd]
  Date dt = new Date(lastModified);
  int myDays = (dt.getYear()+1900)*100*100 + (dt.getMonth()+1)*100 + dt.getDate();
  doc.add(new IntPoint("moddate", myDays ));
  doc.add(new StoredField("moddateVal", myDays ));

Для поиска я обрабатываю это поле расширенным парсером

    public static class QueryParserModdate extends QueryParser {
        public QueryParserModdate(String f, Analyzer a) {
            super(f, a);
        }
        protected Query getRangeQuery(String field, String part1, String part2,
                boolean startInclusive, boolean endInclusive)
                throws ParseException {

            if (field.equalsIgnoreCase("moddate")) {
                int part1Int = Integer.MIN_VALUE;
                int part2Int = Integer.MAX_VALUE;
                try {
                    part1Int = Integer.parseInt(part1);
                } catch (Exception e) {
...
                Query query = IntPoint.newRangeQuery("moddate", part1Int,
                        part2Int);
                return query;
            }
            return super.getRangeQuery(field, part1, part2, startInclusive,
                    endInclusive);
        }

Конечно, не красиво, но у меня работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...