diff --git a/assets/components/search/search.vue b/assets/components/search/search.vue index ee8ee0cd..4c7efe1f 100644 --- a/assets/components/search/search.vue +++ b/assets/components/search/search.vue @@ -108,7 +108,6 @@ export default { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); grid-gap: 0 .5rem; - flex-grow: 1; margin: 0 0 1rem 0; } diff --git a/assets/js/ui/actions.js b/assets/js/ui/actions.js index 0dba2c7c..dee0c08b 100644 --- a/assets/js/ui/actions.js +++ b/assets/js/ui/actions.js @@ -37,6 +37,7 @@ function initUiActions(_store, _router) { releases: searchReleases( query: $query first: $limit + minimalRank: "0.025" ) { id title diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js index 62696b39..d6cd486f 100644 --- a/migrations/20190325001339_releases.js +++ b/migrations/20190325001339_releases.js @@ -1012,7 +1012,7 @@ exports.up = knex => Promise.resolve() .then(() => { // eslint-disable-line arrow-body-style // allow vim fold return knex.raw(` - CREATE FUNCTION search_releases(query text) RETURNS SETOF releases AS $$ + CREATE FUNCTION search_releases_legacy(query text) RETURNS SETOF releases AS $$ SELECT * FROM releases WHERE releases.id IN ( SELECT release_id FROM releases_search AS search WHERE search.document @@ plainto_tsquery('traxxx', regexp_replace(query, '\\.|-|(XXX\\.[\\d+|hd|sd].*$)', ' ', 'ig')) @@ -1020,6 +1020,18 @@ exports.up = knex => Promise.resolve() ); $$ LANGUAGE SQL STABLE; + CREATE FUNCTION search_releases(query text, minimum_rank numeric DEFAULT 0) RETURNS SETOF releases AS $$ + SELECT releases.* FROM ( + SELECT + releases_search.release_id, + ts_rank(releases_search.document, to_tsquery('english', array_to_string(regexp_split_to_array(query, E'\\s+'), '|'))) AS rank + FROM releases_search + ) ranks + LEFT JOIN releases ON releases.id = ranks.release_id + WHERE ranks.rank > minimum_rank + ORDER BY ranks.rank DESC; + $$ LANGUAGE SQL STABLE; + CREATE FUNCTION search_entities(search text) RETURNS SETOF entities AS $$ SELECT * FROM entities WHERE diff --git a/public/img/logos/hollyrandall/hollyrandall.png b/public/img/logos/hollyrandall/hollyrandall.png new file mode 100644 index 00000000..561b8ed5 Binary files /dev/null and b/public/img/logos/hollyrandall/hollyrandall.png differ diff --git a/public/img/logos/hollyrandall/misc/holly-randall_original.png b/public/img/logos/hollyrandall/misc/holly-randall_original.png new file mode 100644 index 00000000..d598b845 Binary files /dev/null and b/public/img/logos/hollyrandall/misc/holly-randall_original.png differ diff --git a/public/img/logos/hollyrandall/network.png b/public/img/logos/hollyrandall/network.png new file mode 100644 index 00000000..c4d01340 Binary files /dev/null and b/public/img/logos/hollyrandall/network.png differ diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 8dad2d8f..1e2bc96f 100644 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -1416,6 +1416,7 @@ const aliases = [ { name: 'dp', for: 'dp', + secondary: true, }, { name: 'double dildo deepthroat', diff --git a/src/store-releases.js b/src/store-releases.js index e76f3a82..9fec818c 100644 --- a/src/store-releases.js +++ b/src/store-releases.js @@ -218,7 +218,7 @@ async function updateReleasesSearch(releaseIds) { SELECT releases.id AS release_id, TO_TSVECTOR( - 'traxxx', + 'english', COALESCE(releases.title, '') || ' ' || entities.name || ' ' || entities.slug || ' ' || @@ -238,7 +238,7 @@ async function updateReleasesSearch(releaseIds) { LEFT JOIN releases_actors AS local_actors ON local_actors.release_id = releases.id LEFT JOIN releases_tags AS local_tags ON local_tags.release_id = releases.id LEFT JOIN actors ON local_actors.actor_id = actors.id - LEFT JOIN tags ON local_tags.tag_id = tags.id AND tags.priority >= 7 + LEFT JOIN tags ON local_tags.tag_id = tags.id AND tags.priority >= 6 LEFT JOIN tags as tags_aliases ON local_tags.tag_id = tags_aliases.alias_for AND tags_aliases.secondary = true ${releaseIds ? 'WHERE releases.id = ANY(?)' : ''} GROUP BY releases.id, entities.name, entities.slug, entities.alias, parents.name, parents.slug, parents.alias;