diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java index e1e33004..f3df489d 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java @@ -179,16 +179,17 @@ public class ClickHouseSearchIndex implements SearchIndex { params.add(request.durationMax()); } - // Global full-text search: ID fields, execution-level _search_text, OR processor-level _search_text + // Global full-text search: exact ID match, full-text on execution + processor level if (request.text() != null && !request.text().isBlank()) { - String likeTerm = "%" + escapeLike(request.text()) + "%"; - conditions.add("(execution_id LIKE ? OR correlation_id LIKE ? OR exchange_id LIKE ?" + String term = escapeLike(request.text()); + String likeTerm = "%" + term + "%"; + conditions.add("(execution_id = ? OR correlation_id = ? OR exchange_id = ?" + " OR _search_text LIKE ? OR execution_id IN (" + "SELECT DISTINCT execution_id FROM processor_executions " + "WHERE tenant_id = 'default' AND _search_text LIKE ?))"); - params.add(likeTerm); - params.add(likeTerm); - params.add(likeTerm); + params.add(term); + params.add(term); + params.add(term); params.add(likeTerm); params.add(likeTerm); }