Vous devrez ajouter votre 'null guard' à la recherche en texte intégral et utiliser to_tsquery
au lieu de plainto_tsquery
(pour que la recherche de préfixe fonctionne).
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 ? ";
et ajoutez le searchString
à votre PreparedStatement
une seconde fois
ps = conn.prepareStatement(sql);
ps.setString(1, searchString);
ps.setString(2, searchString);
ps.setInt(3, firstRow);
ps.setInt(4, rowCount);
Remarque en utilisant une recherche plein texte, vous ne pourrez pas rechercher des parties de mots (comme %user%
, %name
ou us%name
). Vous pouvez cependant rechercher des préfixes, par ex. user:*