INVALID_REQUEST исключение при добавлении документа с повторяющимися именами полей в индекс с помощью API поиска

Я могу добавить документ в индекс, когда каждое имя поля уникально, но когда я пытаюсь обновить документ (то есть я использую тот же код, чтобы добавить его снова с тем же идентификатором и теми же именами полей, но с одним из имена полей повторяются), я получаю исключение AddException с кодом состояния INVALID_REQUEST и сообщением «Не удалось проиндексировать [MYID]». MYID - действительный идентификатор. Повторяющиеся поля имеют имя «Purchase_orderDate» и значение даты, усеченное до дня месяца с помощью Field.date (Date date). Моя версия SDK Google App Engine - Java 1.7, и я получаю то же исключение в 1.6.

Итак, мой вопрос: поддерживает ли Java Google App Engine Search API повторяющиеся поля в документах? Если да, то почему я получаю исключение?

Спасибо, Тодд


person user1558021    schedule 27.07.2012    source источник


Ответы (2)


Вы можете получить исключение, потому что пытаетесь добавить документ с уже существующим идентификатором. Поиск в настоящее время не поддерживает семантику обновления. Попробуйте сначала удалить документ, а затем «добавить» обновленную версию.

person Haldean Brown    schedule 29.07.2012
comment
Спасибо за ответ, Уилл. Я могу обновлять документы, если в новом документе нет повторяющихся имен полей. Также в документации обсуждается обновление документов: developers.google.com/appengine/ документы / java / search /. - person user1558021; 30.07.2012
comment
Хм. Просто для того, чтобы выяснить, где происходит ошибка, если вы удалите документ, а затем снова добавите его, это сработает? - person Haldean Brown; 30.07.2012
comment
Я обнаружил еще одну проблему, которая, возможно, связана с этим: когда я пытаюсь выполнить поиск в поле, я получаю сообщение об ошибке. Когда я ищу из кода, я получаю SearchException. Когда я пытаюсь выполнить тот же поиск из консоли администратора, я получаю сообщение «Временная ошибка при получении документов». Вот запрос, который я пытаюсь выполнить: Purchase_orderDate ›2011-1-1. Я не получаю эту ошибку при поиске в других полях того же индекса. - person user1558021; 02.08.2012
comment
Еще один вывод: запрос Purchase_orderDate = 2012-07-16 не приводит к ошибке, но также не возвращает никаких документов, даже если я вижу документ в моем индексе, который имеет точное значение даты для Purchase_orderDate. . - person user1558021; 02.08.2012
comment
Я открыл для этого проблему: code.google.com/p/googleappengine / issues / detail? id = 7923 - person user1558021; 02.08.2012

Повторяющиеся имена полей не допускаются для типов даты и числа. Но подойдут и другие типы.

person Alan    schedule 21.06.2013