X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e67d0f5d43c56f78694ea4a5f93acec5c93cd0fb..b936759134f8d2b1a68b19be06de8a3f41f782d8:/apps/workbench/app/assets/javascripts/to_tsquery.js diff --git a/apps/workbench/app/assets/javascripts/to_tsquery.js b/apps/workbench/app/assets/javascripts/to_tsquery.js index f2e34d9e08..6957a5fe8f 100644 --- a/apps/workbench/app/assets/javascripts/to_tsquery.js +++ b/apps/workbench/app/assets/javascripts/to_tsquery.js @@ -2,25 +2,27 @@ // // SPDX-License-Identifier: AGPL-3.0 -// to_tsquery() converts a user-entered search query to a useful -// operand for the Arvados API "@@" filter. It returns null if it -// can't come up with anything valid (e.g., q consists entirely of +// to_tsquery_filters() converts a user-entered search query to a list of +// filters using the newly added (as for arvados 1.5) trigram indexes. It returns +// null if it can't come up with anything valid (e.g., q consists entirely of // punctuation). // // Examples: // -// "foo" => "foo:*" -// "foo_bar" => "foo:*&bar:*" -// "foo.bar" => "foo.bar:*" // "." is a word char in FT queries -// "foo/b-r" => "foo/b-r:*" // "/" and "-", too -// "foo|bar" => "foo:*&bar:*" -// " oo|ba " => "oo:*&ba:*" -// "__ " => null -// "" => null -// null => null -window.to_tsquery = function(q) { - q = (q || '').replace(/[^-\w\.\/]+/g, ' ').trim().replace(/ /g, ':*&') +// "foo" => [["any", "ilike", "%foo%"]] +// "foo.bar" => [["any", "ilike", "%foo.bar%"]] // "." is a word char in FT queries +// "foo/b-r" => [["any", "ilike", "%foo/b-r%"]] // "/" and "-", too +// "foo bar" => [["any", "ilike", "%foo%"], ["any", "ilike", "%bar%"]] +// "foo|bar" => [["any", "ilike", "%foo%"], ["any", "ilike", "%bar%"]] +// " oo|bar" => [["any", "ilike", "%oo%"], ["any", "ilike", "%bar%"]] +// "" => [] +// " " => [] +// null => [] +window.to_tsquery_filters = function(q) { + q = (q || '').replace(/[^-\w\.\/]+/g, ' ').trim() if (q == '') - return null - return q + ':*' -} + return [] + return q.split(" ").map(function(term) { + return ["any", "ilike", "%"+term+"%"] + }) +} \ No newline at end of file