Как выполнить поиск в числовых полях в Google AppEngine с параметрами меньше или равно?

Эти запросы не будут работать:

INFO: Searching with query:  year:(<=2008 OR  2011) 
INFO: Searching with query:  year:(<=2008)

Код

    log.info("Searching with query: " + q);
    try {
        Results<ScoredDocument> results = getIndex().search(q);

Исключение

INFO: Searching with query:  year:(<=2008 OR  2011) 
line 1:7 no viable alternative at input '<='
Nov 08, 2013 3:36:03 PM org.apache.struts2.dispatcher.Dispatcher error
SEVERE: Exception occurred during processing request: Unable to parse query:  year:(<=2008 OR  2011) 
com.google.appengine.api.search.SearchQueryException: Unable to parse query:  year:(<=2008 OR  2011) 
at com.google.appengine.api.search.checkers.QueryChecker.checkQueryParses(QueryChecker.java:44)
at com.google.appengine.api.search.checkers.QueryChecker.checkQuery(QueryChecker.java:28)
at com.google.appengine.api.search.Query$Builder.setQueryString(Query.java:91)
at com.google.appengine.api.search.Query$Builder.build(Query.java:107)
at com.google.appengine.api.search.IndexImpl.searchAsync(IndexImpl.java:378)
at com.google.appengine.api.search.IndexImpl.search(IndexImpl.java:479)

Версия

appengine-api-1.0-sdk-1.8.6.jar

Справка

https://developers.google.com/appengine/docs/java/search/query_strings


person Chloe    schedule 08.11.2013    source источник
comment
Разве <=2008 не то же самое, что <2009? Попробуй это.   -  person EkoostikMartin    schedule 09.11.2013


Ответы (1)


Похоже, синтаксис неправильный. На основании предоставленной вами ссылки, поскольку

"weather=stormy" "weather: stormy" эквивалентны, попробуйте:

"year<=2008 OR year=2011"

(при условии, что это то, что вы имели в виду в своем примере).

person Bizmarck    schedule 08.11.2013
comment
но вы используете : и <= для year одновременно в своем запросе, это все равно, что писать year = <= 2008 - person Bizmarck; 09.11.2013