aboutsummaryrefslogtreecommitdiff
path: root/src/server/Search.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/Search.ts')
-rw-r--r--src/server/Search.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/server/Search.ts b/src/server/Search.ts
new file mode 100644
index 000000000..7d8602346
--- /dev/null
+++ b/src/server/Search.ts
@@ -0,0 +1,38 @@
+import * as rp from 'request-promise';
+import { Database } from './database';
+
+export class Search {
+ public static Instance = new Search();
+ private url = 'http://localhost:8983/solr/';
+
+ public updateDocument(document: any): rp.RequestPromise {
+ return rp.post(this.url + "dash/update/json/docs", {
+ headers: { 'content-type': 'application/json' },
+ body: JSON.stringify(document)
+ });
+ }
+
+ public async search(query: string) {
+ const searchResults = JSON.parse(await rp.get(this.url + "dash/select", {
+ qs: {
+ q: query
+ }
+ }));
+ const fields = searchResults.response.docs;
+ const ids = fields.map((field: any) => field.id);
+ const docs = await Database.Instance.searchQuery(ids);
+ const docIds = docs.map((doc: any) => doc._id);
+ return docIds;
+ }
+
+ public async clear() {
+ return rp.post(this.url + "dash/update", {
+ body: {
+ delete: {
+ query: "*:*"
+ }
+ },
+ json: true
+ });
+ }
+} \ No newline at end of file