SELECT * FROM db WHERE
((PUB_NAME <> 'TIME' AND PUB_NAME<>'US News')
OR
(DATE >= '2002-7-12' AND (PUB_NAME='TIME' OR PUB_NAME='US News')))
AND
((TITLE LIKE 'test%' or TITLE LIKE 'prep%') OR (ABSTRACT LIKE 'test%' or ABSTRACT LIKE 'prep%'))
ORDER BY DATE DESC, TITLE LIMIT 0,5
A text can only begin in one way, hokay?
if you wish to search for records where title/abstract contains all words
SELECT * FROM db WHERE
((PUB_NAME <> 'TIME' AND PUB_NAME<>'US News')
OR
(DATE >= '2002-7-12' AND (PUB_NAME='TIME' OR PUB_NAME='US News')))
AND
((TITLE LIKE '%test%' and TITLE LIKE '%prep%') OR (ABSTRACT LIKE '%test%' and ABSTRACT LIKE '%prep%'))
ORDER BY DATE DESC, TITLE LIMIT 0,5
This will be very slow, you better look at full text indexing.