Запрос свойств даты с помощью Endeca

Пожалуйста, помогите мне в моей проблеме с внедрением Endeca Guided Search 6.3.1 с ATG 10.2.

Предыстория. Я реализую базовый текстовый поиск, в котором пользователь может искать дату (например, «24 февраля 2014 г.»), мне нужно вернуть записи, у которых есть какое-либо свойство даты, соответствующее этой дате.

Данные представляют собой данные для выставления счетов, поэтому существуют такие свойства, как paymentDueDate, createDate и т. д., которые имеют тип дата.

Проблема: данные, проиндексированные в Endeca для свойств типа даты, представлены в миллисекундах. Поэтому, когда мне нужно выполнить поиск по введенной дате, я сначала анализирую строку даты (термин поиска), введенную пользователем, с точностью до миллисекунды, а затем запускаю запрос, например...

URLEneQuery --> N=0&Ntk=All&Ntt=<dateInMillis>

Моя проблема в том, что я не могу искать целый день, когда я это делаю, так как дата преобразуется в определенную миллисекунду, и совпадающие записи будут теми, которые имеют точную миллисекунду в качестве значения для свойств даты. Я мог бы попробовать фильтр диапазона в миллисекундах для начала и конца дня, по-видимому, это не работает, когда вы запрашиваете «Все» вместо определенного свойства.

Вопрос: возможно ли индексировать свойства даты в Endeca в каком-то формате, подобном дате, потому что мне не нужно хранить/индексировать миллисекунды/минуты/часы. Мне просто нужна дата, чтобы я мог запустить запрос без разбора строки и запустить запрос на дату ввода «24 февраля 2014 года» как есть?

Или есть другой способ запросить MDEX с помощью API презентации?

Любая помощь приветствуется.


person boyintello    schedule 03.03.2014    source источник


Ответы (1)


В главе 11 Руководства разработчика MDEX есть пример того, как вы можете работать со свойствами DateTime. Тот факт, что у вас уже есть даты в миллисекундах, соответствует тому, как они в конечном итоге передаются Endeca.

Что касается запроса данных, у вас есть два варианта: вы можете либо создать запрос диапазона, чтобы получить день назад, преобразовав 00:00:01 дня в миллисекунды в качестве времени начала и 23:59:59 дня. day to в качестве конечного значения (очевидно, нужно позаботиться об уровнях ошибок счетов, генерируемых за пределами «недостающих» 2000 миллисекунд, но это вам решать). В качестве альтернативы вы можете «обрезать» свой DateTime на этапе обработки данных. Это означает, что вам нужно удалить часть времени из даты, пока вы ее извлекаете. Чтобы достичь этого с помощью файла outputconfig.xml, вы создаете свойство только для чтения в своем репозитории, а затем заполняете его значение новым RepositoryPropertyDescriptor, который удаляет временную часть.

person radimpe    schedule 03.03.2014