Dovrebbe dipendere solo dalla precedenza degli operatori (AND ha precedenza rispetto ad OR).
Prova a racchiudere entrambe le espressioni OR dentro a parentesi tonde, così:

SELECT * FROM articles WHERE ( (title LIKE '%valore%' OR subtitle LIKE '%valore%' OR tags LIKE '%valore%') OR (title LIKE '%dati%' OR subtitle LIKE '%dati%' OR tags LIKE '%dati%') ) AND public='1' ORDER BY insertDate DESC

Ciao ciao