Я работаю с базой данных SQLite 3, которая имеет дело с достаточно общим поиском по ключевым словам, который ищет заданные термины в нескольких (точное число в настоящее время неизвестно, но вероятно 2-5) полях.
В качестве примера предположим, что у нас есть таблица со столбцами Title
и Content
, и кто-то передает строку поиска 'foo bar baz'
, которая затем легко разделяется на три условия поиска foo
,bar
и baz
до начала поиска.
Все это кажется достаточно простым, пока не наступит время для генерации запроса.Относительно просто с несколькими циклами for создать оператор вроде:
SELECT *
FROM table
WHERE (Title LIKE '%foo%' OR Content LIKE '%foo%') AND
(Title LIKE '%bar%' OR Content LIKE '%bar%') AND
(Title LIKE '%baz%' OR Content LIKE '%baz%')
, и в целом это должно сработать, но это выглядит как очень повторяющийся способ структурирования запроса и способ, который может легко всплытьразмер, если для поиска достаточно поисковых терминов и столбцов.
Так что мой вопрос: существует ли более простой способ структурирования такого утверждения?