From b57ccd06165c8efdf9f35b3a0d760ec2a2e52498 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 21 Apr 2023 17:39:04 +0800 Subject: [PATCH] Allow wildcards in query filter --- packages/api/src/elastic/pages.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 1d2262867..8b39cf200 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -27,10 +27,24 @@ import { } from './types' const appendQuery = (builder: ESBuilder, query: string): ESBuilder => { + const fields = ['title', 'content', 'author', 'description', 'siteName'] + if (query.includes('*')) { + // wildcard query + fields.forEach((field) => { + builder = builder.orQuery('wildcard', { + [field]: { + value: query, + case_insensitive: true, + }, + }) + }) + return builder.queryMinimumShouldMatch(1) + } + return builder .orQuery('multi_match', { query, - fields: ['title', 'content', 'author', 'description', 'siteName'], + fields, operator: 'and', type: 'cross_fields', })