Ще трябва да добавите своя „null guard“ към търсенето в пълен текст и да използвате to_tsquery
вместо plainto_tsquery
(за да работи префиксното търсене).
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 ? ";
и добавете searchString
към вашия PreparedStatement
втори път
ps = conn.prepareStatement(sql);
ps.setString(1, searchString);
ps.setString(2, searchString);
ps.setInt(3, firstRow);
ps.setInt(4, rowCount);
Забележка като използвате търсене в пълен текст, няма да можете да търсите части от думи (като %user%
, %name
или us%name
). Можете обаче да търсите префикси, напр. user:*