How do I select arrays that are not empty?
The reason seems to be that empty strings in that column have array dimensions [1:0]. Should normally be NULL. See:

SELECT lexemes, array_dims(lexemes) FROM ts_debug('a title');

 lexemes | array_dims
---------+------------
 {}      | [1:0]  -- !!
         |
 {titl}  | [1:1]


Empty arrays normally have NULL as array dimensions.

SELECT '{}'::text[] AS test, array_dims('{}'::text[]);

 test    | array_dims
---------+------------
 {}      | &lt;NULL&gt;


Hence, the comparison lexemes = '{}'::text[] returns FALSE. Looks like a bug to me. I tested versions 8.4 - 10 Beta. It's in all versions.

As a workaround, to exclude all empty arrays including the odd case (and NULL):

SELECT *
FROM   ts_debug('This is a title')
WHERE  cardinality(lexemes) &gt; 0;


Or compare the text representation:

...
AND    lexemes::text &lt;&gt; '{}';


I filed bug report #14826.