blob: ceaa1a90523e0f93d3ff7f41e752255bc1f82f8e [file] [log] [blame]
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Code generated with go generate -run gen_query.go. DO NOT EDIT.
package symbolsearch
// QuerySymbol is used when the search query is only one word, with no dots.
// In this case, the word must match a symbol name and ranking is completely
// determined by the path_tokens.
const QuerySymbol = `
WITH results AS (
SELECT
s.name AS symbol_name,
sd.package_path,
sd.module_path,
sd.version,
sd.name AS package_name,
sd.synopsis,
sd.license_types,
sd.commit_time,
sd.imported_by_count,
ssd.package_symbol_id,
ssd.goos,
ssd.goarch,
ln(exp(1)+imported_by_count)
* CASE WHEN sd.redistributable THEN 1 ELSE 0.500000 END
* CASE WHEN COALESCE(has_go_mod, true) THEN 1 ELSE 0.800000 END AS score
FROM symbol_search_documents ssd
INNER JOIN search_documents sd ON sd.unit_id = ssd.unit_id
INNER JOIN symbol_names s ON s.id = ssd.symbol_name_id
WHERE s.tsv_name_tokens @@ to_tsquery('symbols', replace($1, '_', '-'))
)
SELECT
r.package_path,
r.module_path,
r.version,
r.package_name,
r.synopsis,
r.license_types,
r.commit_time,
r.imported_by_count,
r.symbol_name,
r.goos,
r.goarch,
ps.type AS symbol_type,
ps.synopsis AS symbol_synopsis,
COUNT(*) OVER() AS total
FROM results r
INNER JOIN package_symbols ps ON r.package_symbol_id = ps.id
WHERE r.score > 0.1
ORDER BY
score DESC,
commit_time DESC,
symbol_name,
package_path
LIMIT $2
OFFSET $3;`
// QueryPackageDotSymbol is used when the search query is one element
// containing a dot, where the first part is assumed to be the package name and
// the second the symbol name. For example, "sql.DB" or "sql.DB.Begin".
const QueryPackageDotSymbol = `
WITH results AS (
SELECT
s.name AS symbol_name,
sd.package_path,
sd.module_path,
sd.version,
sd.name AS package_name,
sd.synopsis,
sd.license_types,
sd.commit_time,
sd.imported_by_count,
ssd.package_symbol_id,
ssd.goos,
ssd.goarch,
ln(exp(1)+imported_by_count)
* CASE WHEN sd.redistributable THEN 1 ELSE 0.500000 END
* CASE WHEN COALESCE(has_go_mod, true) THEN 1 ELSE 0.800000 END AS score
FROM symbol_search_documents ssd
INNER JOIN search_documents sd ON sd.unit_id = ssd.unit_id
INNER JOIN symbol_names s ON s.id = ssd.symbol_name_id
WHERE (sd.name=split_part($1, '.', 1) OR sd.package_path=split_part($1, '.', 1)) AND (
s.tsv_name_tokens @@ to_tsquery('symbols', substring(replace($1, '_', '-') from E'[^.]*\.(.+)$'))
)
)
SELECT
r.package_path,
r.module_path,
r.version,
r.package_name,
r.synopsis,
r.license_types,
r.commit_time,
r.imported_by_count,
r.symbol_name,
r.goos,
r.goarch,
ps.type AS symbol_type,
ps.synopsis AS symbol_synopsis,
COUNT(*) OVER() AS total
FROM results r
INNER JOIN package_symbols ps ON r.package_symbol_id = ps.id
WHERE r.score > 0.1
ORDER BY
score DESC,
commit_time DESC,
symbol_name,
package_path
LIMIT $2
OFFSET $3;`
// QueryOneDot is used when the search query is one element
// containing a dot. This means it can either be <package>.<symbol> or
// <type>.<methodOrField>.
const QueryOneDot = `
WITH results AS (
SELECT
s.name AS symbol_name,
sd.package_path,
sd.module_path,
sd.version,
sd.name AS package_name,
sd.synopsis,
sd.license_types,
sd.commit_time,
sd.imported_by_count,
ssd.package_symbol_id,
ssd.goos,
ssd.goarch,
ln(exp(1)+imported_by_count)
* CASE WHEN sd.redistributable THEN 1 ELSE 0.500000 END
* CASE WHEN COALESCE(has_go_mod, true) THEN 1 ELSE 0.800000 END AS score
FROM symbol_search_documents ssd
INNER JOIN search_documents sd ON sd.unit_id = ssd.unit_id
INNER JOIN symbol_names s ON s.id = ssd.symbol_name_id
WHERE (sd.name=split_part($1, '.', 1) OR sd.package_path=split_part($1, '.', 1)) AND (
s.tsv_name_tokens @@ to_tsquery('symbols', substring(replace($1, '_', '-') from E'[^.]*\.(.+)$'))
) OR s.tsv_name_tokens @@ to_tsquery('symbols', replace($1, '_', '-'))
)
SELECT
r.package_path,
r.module_path,
r.version,
r.package_name,
r.synopsis,
r.license_types,
r.commit_time,
r.imported_by_count,
r.symbol_name,
r.goos,
r.goarch,
ps.type AS symbol_type,
ps.synopsis AS symbol_synopsis,
COUNT(*) OVER() AS total
FROM results r
INNER JOIN package_symbols ps ON r.package_symbol_id = ps.id
WHERE r.score > 0.1
ORDER BY
score DESC,
commit_time DESC,
symbol_name,
package_path
LIMIT $2
OFFSET $3;`
// QueryMultiWord is used when the search query is multiple elements.
const QueryMultiWord = `
WITH results AS (
SELECT
s.name AS symbol_name,
sd.package_path,
sd.module_path,
sd.version,
sd.name AS package_name,
sd.synopsis,
sd.license_types,
sd.commit_time,
sd.imported_by_count,
ssd.package_symbol_id,
ssd.goos,
ssd.goarch,
(
ts_rank(
'{0.1, 0.2, 1.0, 1.0}',
sd.tsv_path_tokens,
to_tsquery('symbols', replace(replace($1, '_', '-'), ' ', ' | '))
)
* ln(exp(1)+imported_by_count)
* CASE WHEN sd.redistributable THEN 1 ELSE 0.500000 END
* CASE WHEN COALESCE(has_go_mod, true) THEN 1 ELSE 0.800000 END
) AS score
FROM symbol_search_documents ssd
INNER JOIN search_documents sd ON sd.unit_id = ssd.unit_id
INNER JOIN symbol_names s ON s.id = ssd.symbol_name_id
WHERE (
s.tsv_name_tokens @@ to_tsquery('symbols', replace(replace($1, '_', '-'), ' ', ' | '))
) AND (
sd.tsv_path_tokens @@ to_tsquery('symbols', replace(replace($1, '_', '-'), ' ', ' | '))
)
)
SELECT
r.package_path,
r.module_path,
r.version,
r.package_name,
r.synopsis,
r.license_types,
r.commit_time,
r.imported_by_count,
r.symbol_name,
r.goos,
r.goarch,
ps.type AS symbol_type,
ps.synopsis AS symbol_synopsis,
COUNT(*) OVER() AS total
FROM results r
INNER JOIN package_symbols ps ON r.package_symbol_id = ps.id
WHERE r.score > 0.1
ORDER BY
score DESC,
commit_time DESC,
symbol_name,
package_path
LIMIT $2
OFFSET $3;`