Skip to content

Commit 96c6a2e

Browse files
authored
Merge pull request #20 from demokratie-live/sprint#6/search
add search query and create indexes
2 parents 77710da + 335b9fc commit 96c6a2e

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

src/graphql/resolvers/Procedure.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,11 @@ export default {
8282
},
8383
procedure: async (parent, { id }, { ProcedureModel }) =>
8484
ProcedureModel.findOne({ procedureId: id }),
85+
86+
searchProcedures: (parent, { term }, { ProcedureModel }) =>
87+
ProcedureModel.find(
88+
{ $text: { $search: term }, period: 19 },
89+
{ score: { $meta: 'textScore' } },
90+
).sort({ score: { $meta: 'textScore' } }),
8591
},
8692
};

src/graphql/schemas/Procedure.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ type Procedure {
2222
type Query {
2323
procedure(id: ID!): Procedure
2424
procedures(type: ProcedureType!, pageSize: Int, offset: Int): [Procedure]
25+
searchProcedures(term: String!): [Procedure]
2526
}

src/models/Procedure.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,30 @@ const ProcedureSchema = new Schema(
2525
{ timestamps: true },
2626
);
2727

28+
ProcedureSchema.index(
29+
{
30+
procedureId: 'text',
31+
title: 'text',
32+
abstract: 'text',
33+
tags: 'text',
34+
subjectGroups: 'text',
35+
},
36+
{
37+
name: 'searchIndex',
38+
default_language: 'german',
39+
weights: {
40+
title: 10,
41+
abstract: 5,
42+
},
43+
},
44+
);
45+
2846
export default mongoose.model('Procedure', ProcedureSchema);
47+
48+
mongoose.model('Procedure').ensureIndexes((err) => {
49+
if (!err) {
50+
console.log('SearchIndexs for Procedures created');
51+
} else {
52+
console.log({ err });
53+
}
54+
});

0 commit comments

Comments
 (0)