Będziesz musiał dodać swoją „ochronę zerową” do wyszukiwania pełnotekstowego i użyć to_tsquery zamiast plainto_tsquery (aby wyszukiwanie prefiksu działało).
SqlStatement = "SELECT * FROM ACCOUNT "
+ " WHERE (trim(?) = '') IS NOT FALSE"
+ " OR to_tsvector('english', USER_NAME || ' ' || FIRST_NAME || ' ' || LAST_NAME ) @@ to_tsquery(?)"
+ " ORDER BY user_name ASC offset ? limit ? ";
i dodaj searchString do Twojego PreparedStatement drugi raz
ps = conn.prepareStatement(sql);
ps.setString(1, searchString);
ps.setString(2, searchString);
ps.setInt(3, firstRow);
ps.setInt(4, rowCount);
Uwaga używając wyszukiwania pełnotekstowego nie będziesz w stanie wyszukać części słów (takich jak %user% , %name lub us%name ). Możesz jednak wyszukiwać przedrostki, np. user:*