Экранирование поисковых запросов для службы полнотекстового поиска Google

Это кросс-постhttps: //groups.google.com/d/topic/google-appengine/97LY3Yfd_14/discussio

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

У меня двойная проблема:

Если не избежать дерьма из многих символов (больше, чем те, на которые намекают в документах), парсер вызоветQueryException. Когда я выполнил запрос до точки, которую он не вызовет, числовые операторы (>, <,> =, <=) больше не обрабатываются правильно (не учитываются при поиске).

Я настраиваю тест, где кормлюstring.printable вmy_index.search() и обнаружил, что это подниметQueryException на каждом из «печатаемых» управляющих символов, которые я сейчас вычеркиваю, а также вещи, которые кажутся невинными, как звездочка, запятая, скобки, фигурные скобки, тильда. Ни одно из них не упомянуто в документах как нуждающиеся в спасении.

Пока я пробовал:

cgi.escape()saxutils.escape() с отображением ascii в urlencoded эквиваленты (например,, ->%2C)saxutils.escape() с отображением ascii в html-кодировку ascii-кодов сущностей (например,&#123;)urllib.quote_plus()

До сих пор я добивался лучших результатов при использовании URL-стиля %NN) замены, но>, <,> = и <= по-прежнему не дают ожидаемых результатов из индекса. Кроме того, и это, похоже, не имеет ничего общего с проблемой выхода, но использованиеNOT передfield = valueохоже, что запрос типа @ тоже не работает так, как рекламируетс

tl; др

Как я должен избегать своих запросов перед отправкой их в службу поиска, чтобы парсер не вызывалQueryException а такж мой запрос дает ожидаемые результаты?

Ответы на вопрос(1)

Ваш ответ на вопрос