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