у меня есть индекс lucene с «uniqueKey»
<uniqueKey>ID</uniqueKey>
Насколько я знаю, этот ключ должен быть "text" (не int или long).
<field name="ID" type="string" indexed="true" stored="true"/>
Небольшое приложение использовало индекс lucene для поиска только в тех записях, которые были добавлены с момента последнего запуска этого приложения.
Чтобы достичь этой цели, я пытаюсь сделать следующее.
- Загрузить последний идентификатор (из плоского файла)
в переменную $ oldID
- получить текущий (последний / самый высокий) идентификатор
из Solr / Lucene в переменную
$ CurrentID
- выполнить поиск диапазона между
$ oldID и $ currentID
- Сохранить $ currentID в плоский файл
для следующего поиска / для следующего запуска
К сожалению, я замечаю проблему:
A.) Как найти самый высокий идентификатор?
или B.) как обрабатывать уникальный ключ как цифру, а не текст / символ
Я пробовал что-то подобное:
http://localhost:8080/solr/select/?defType=func&q=max(ID,0)&fq=ID:[$oldID+TO+$currentID]&fl=ID
... который возвращает странное, думает: "999999" как самое высокое значение. Это не правильно, потому что самый высокий идентификатор - 1043725. Я думаю, это потому, что идентификатор - это текстовое поле
C.) Может быть, есть какой-то другой способ поиска только по последним добавленным записям?
Спасибо за любую помощь!