From a7b65be293b3c498eb8e35d97736f0015b19da83 Mon Sep 17 00:00:00 2001 From: Henrik Askjer <henrik.askjer@uib.no> Date: Tue, 28 Sep 2021 12:21:47 +0200 Subject: [PATCH] add pattern search --- src/components/Autocomplete.vue | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/components/Autocomplete.vue b/src/components/Autocomplete.vue index 0f40bb38..76ec4c8f 100644 --- a/src/components/Autocomplete.vue +++ b/src/components/Autocomplete.vue @@ -29,7 +29,7 @@ <span class="search-hit"> {{data.item.label}} </span> - ({{data.item.lang? data.item.lang[1] ? "bm, nn" : {"bob": "bm", "nob": "nn"}[data.item.lang[0]] : 'fritekstsøk'}}) + ({{data.item.lang? data.item.lang[1] ? "bm, nn" : {"bob": "bm", "nob": "nn"}[data.item.lang[0]] : data.item.mode}}) </template> <template slot="no-data"> <div></div> @@ -79,27 +79,36 @@ // Keep full text search in the list while requesting suggestions if (this.items[0]) { if (this.items[0].time < time) { - this.items.splice(0,1, {q: q, label: q, time: time}) + this.items.splice(0,1, {q: q, label: q, time: time, mode: 'fritekst'}) } } else { this.items.push({q: q, label: q, time: time}) } let self = this - self.api.get('suggest?', {params: {q: q, dict: self.$parent.lang, n: 9}}) + self.api.get('suggest?', {params: {q: q, dict: self.$parent.lang, n: 9, scope: 'nf'}}) .then(async (response) => { if (self.$refs.autocomplete.searchInput == q & self.suggesting) { let hits = [] - response.data.forEach((item, i) => { + + if (/_|\*|\|/.test(q)) { + hits.push({q: q, label: q + ' ', time: time, mode: "mønster"}) + } + + response.data.a.n.forEach((item) => { let match = item[0] - let hit = {q: q, match: match, label: match, time: time} - hit.lang = item[1] + let hit = {q: q, match: match, label: match, time: time, lang: item[1]} hits.push(hit) }); + response.data.a.f.forEach((item) => { + let match = item[0] + let hit = {q: q, match: match, label: match, time: time, mode: "fulltekst"} + hits.push(hit) + }); // whitespace necessary because duplicates aren't allowed in the dropdown - hits.push({q: q, label: q + ' ', time: time}) + hits.push({q: q, label: q + ' ', time: time, mode: "fritekst"}) self.items = hits } self.loading = false -- GitLab