Change account search to be more forgiving of spaces (#34455)

This commit is contained in:
Eugen Rochko 2025-04-25 12:35:21 +02:00 committed by GitHub
parent 7a70d95435
commit 91db45b197
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 47 additions and 5 deletions

View File

@ -19,9 +19,16 @@ class AccountsIndex < Chewy::Index
type: 'stemmer',
language: 'possessive_english',
},
word_joiner: {
type: 'shingle',
output_unigrams: true,
token_separator: '',
},
},
analyzer: {
# "The FOOING's bar" becomes "foo bar"
natural: {
tokenizer: 'standard',
filter: %w(
@ -35,11 +42,20 @@ class AccountsIndex < Chewy::Index
),
},
# "FOO bar" becomes "foo bar"
verbatim: {
tokenizer: 'standard',
filter: %w(lowercase asciifolding cjk_width),
},
# "Foo bar" becomes "foo bar foobar"
word_join_analyzer: {
type: 'custom',
tokenizer: 'standard',
filter: %w(lowercase asciifolding cjk_width word_joiner),
},
# "Foo bar" becomes "f fo foo b ba bar"
edge_ngram: {
tokenizer: 'edge_ngram',
filter: %w(lowercase asciifolding cjk_width),

View File

@ -127,13 +127,39 @@ class AccountSearchService < BaseService
private
def core_query
{
dis_max: {
queries: [
{
match: {
username: {
query: @query,
analyzer: 'word_join_analyzer',
},
},
},
{
match: {
display_name: {
query: @query,
analyzer: 'word_join_analyzer',
},
},
},
{
multi_match: {
query: @query,
type: 'best_fields',
fields: %w(username^2 display_name^2 text text.*),
fields: %w(text text.*),
operator: 'and',
},
},
],
tie_breaker: 0.5,
},
}
end
end