solr: найти последний / самый высокий уникальный ключ и поиск диапазона - PullRequest
0 голосов
/ 27 апреля 2011

у меня есть индекс lucene с «uniqueKey»

<uniqueKey>ID</uniqueKey>

Насколько я знаю, этот ключ должен быть "text" (не int или long).

<field name="ID" type="string" indexed="true" stored="true"/>

Небольшое приложение использовало индекс lucene для поиска только в тех записях, которые были добавлены с момента последнего запуска этого приложения.

Чтобы достичь этой цели, я пытаюсь сделать следующее.

  1. Загрузить последний идентификатор (из плоского файла) в переменную $ oldID
  2. получить текущий (последний / самый высокий) идентификатор из Solr / Lucene в переменную $ CurrentID
  3. выполнить поиск диапазона между $ oldID и $ currentID
  4. Сохранить $ currentID в плоский файл для следующего поиска / для следующего запуска

К сожалению, я замечаю проблему:

A.) Как найти самый высокий идентификатор?

или B.) как обрабатывать уникальный ключ как цифру, а не текст / символ

Я пробовал что-то подобное:

http://localhost:8080/solr/select/?defType=func&q=max(ID,0)&fq=ID:[$oldID+TO+$currentID]&fl=ID

... который возвращает странное, думает: "999999" как самое высокое значение. Это не правильно, потому что самый высокий идентификатор - 1043725. Я думаю, это потому, что идентификатор - это текстовое поле

C.) Может быть, есть какой-то другой способ поиска только по последним добавленным записям?

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 28 апреля 2011

Поле Solr uniqueKey может поддерживать любой из классов типов данных, которые поддерживает Solr.Хотя базовый индекс Lucene сам обрабатывает все сохраненные / проиндексированные данные как текст, Solr управляет переводом для обработки индексированных данных в соответствии с типами данных.

ограничение типа поля строки выимеется в виду, если вы включили QueryElevationComponent в конфигурации Solr.Если вы не включили эту функцию, вы можете сделать свой уникальный ключ долгим, чтобы решить вашу проблему.

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