Как работает поиск по Сиене? - PullRequest
2 голосов
/ 10 июня 2011

Я ищу документацию о том, как сделать запрос в Сиене, который возвращает все элементы, которые содержат строку.Я пробовал что-то вроде

return all().search("nome", query).fetch();

, но он возвращает все элементы без фильтрации.

1 Ответ

2 голосов
/ 13 июня 2011

Извините за задержку, я не был доступен!
Вы используете GAE, не так ли?
Siena Search for GAE очень ограничен, поскольку GAE предоставляет очень ограниченные функции поиска для своего хранилища данных.Таким образом, Сиена реализует все, что может, используя некоторые уловки.

В итоге:

Сиена РАЗРЕШАЕТ следующие поиски GAE (в настоящее время):

  • поиск по 1 полю и не более: all().search("the_string_to_search", "the_field_to_search").fetch()

  • поиск по полю, равному одной точной строке: all().search("myString", "the_field_to_search").fetch()

  • поиск по полю, равному нескольким точным строкам (например, ИЛИ): all().search("myString1 myString2", "the_field_to_search").fetch()

  • поиск по полю, начинающемуся со строки: all().search("myString*", "the_field_to_search").fetch()

Сиена НЕ РАЗРЕШАЕТ следующие поиски GAE:

  • поиск по нескольким полям: all().search("myString", "field1", "field2").fetch() Исключение GENERATES

  • поиск по полю, заканчивающемуся строкой: all().search("*myString", "the_field_to_search").fetch() GENERATES EXCEPTION

...