2012-05-03 6 views
4

Согласно https://developers.google.com/fusiontables/docs/developers_reference ИЛИ операции не допускаются как часть условий фильтра. Поэтому я пытаюсь создать творческий способ решить следующие проблемы:Условия фильтра Fusion Tables OR

У меня есть таблица слияния, поддерживаемая Google Map с сотнями мест, и вы хотите отфильтровать ее только в тех местах, где есть «теги» или «заголовок» 'содержащий параметр поиска.

В идеале я мог бы просто использовать следующее, как мое состояние фильтра:

tags CONTAINS IGNORING CASE 'searchterm' OR title CONTAINS IGNORING CASE 'searchterm' 

Но слияние таблицы API просто не позволяет. Так что делать? Сделайте 2 отдельных запроса, затем отфильтруйте дубликаты? Это означает, что я не могу использовать приятную функциональность плитки FusionTablesLayer.

Что вы хотите сделать?

ответ

3

Возможным ответом является предварительная визуализация данных в таблице. По существу добавить еще один столбец, который является совокупностью тегов и заголовков. Тогда мне нужно только запросить один столбец «tags_or_titles». Конечно, это означает, что больше данных munging заранее, когда я экспортировать данные в таблицу слитой и не чувствую себя так хорошо и чисто ...

+0

Это то, что я в конечном итоге реализации и действительно не займет много работы, чтобы предварительно объединить весь текст в одну колонку перед отправкой его в таблица слияния. Меня все еще беспокоит, что таблицы Fusion не разрешают OR-запросы и не позволяют конкатенации строк. – Tron

2

Как насчет добавления столбца в таблицу под названием «Show_In_Results»,

затем запускать два отдельных запроса для обновления этого столбца для каждой строки данных на основе того, найден ли поисковый запрос в определенном столбце или нет.

UPDATE 'table_id' 
SET Show_In_Results = 1 

UPDATE 'table_id' 
SET Show_In_Results = 1 
WHERE tags CONTAINS IGNORING CASE 'searchterm' 

UPDATE 'table_id' 
SET Show_In_Results = 1 
WHERE title CONTAINS IGNORING CASE 'searchterm' and Show_In_Results <> 1 

Затем, когда вы предоставляете свой слой карты:

SELECT 'columns' FROM 'table_id' WHERE Show_In_Results = 1 
+0

Извините, оставил ключевую часть второго запроса. Обновлено сейчас. – javram

+0

Это будет работать и является довольно творческим способом решения этой проблемы. Единственная причина, по которой я этого не делал, заключается в том, что он накладывает дополнительную задержку на (мобильный) клиент, хотя это, вероятно, незначительно. Кроме того, я немного обеспокоен тем, что если несколько запросов происходят в тандеме с разных клиентов, вы можете получить результаты вне синхронизации. – Tron

Смежные вопросы