Du bliver nødt til at tilføje din 'null guard' til fuldtekstsøgningen og bruge to_tsquery
i stedet for plainto_tsquery
(for at præfikssøgning skal fungere).
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 ? ";
og tilføj searchString
til din PreparedStatement
anden gang
ps = conn.prepareStatement(sql);
ps.setString(1, searchString);
ps.setString(2, searchString);
ps.setInt(3, firstRow);
ps.setInt(4, rowCount);
Bemærk ved at bruge en fuldtekstsøgning vil du ikke være i stand til at søge efter orddele (som %user%
, %name
eller us%name
). Du kan dog søge efter præfikser, f.eks. user:*