From f638163eca7ba56e1138c3fd595218664aa260c3 Mon Sep 17 00:00:00 2001 From: KMY Date: Sun, 10 Sep 2023 18:43:02 +0900 Subject: [PATCH] Fix search test --- .env.test | 5 +++ app/chewy/accounts_index.rb | 71 +++++++++++++++++++++++++++++++++++-- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/.env.test b/.env.test index 761d0d9210..d06c73f2f3 100644 --- a/.env.test +++ b/.env.test @@ -3,3 +3,8 @@ NODE_ENV=tests # Federation LOCAL_DOMAIN=cb6e6126.ngrok.io LOCAL_HTTPS=true +# Elasticsearch +ES_ENABLED=true +ES_HOST=localhost +ES_PORT=9200 +ES_PREFIX=test diff --git a/app/chewy/accounts_index.rb b/app/chewy/accounts_index.rb index c854cdf01c..ad3816e4d6 100644 --- a/app/chewy/accounts_index.rb +++ b/app/chewy/accounts_index.rb @@ -1,7 +1,72 @@ # frozen_string_literal: true class AccountsIndex < Chewy::Index - settings index: index_preset(refresh_interval: '30s'), analysis: { + DEVELOPMENT_SETTINGS = { + filter: { + english_stop: { + type: 'stop', + stopwords: '_english_', + }, + + english_stemmer: { + type: 'stemmer', + language: 'english', + }, + + english_possessive_stemmer: { + type: 'stemmer', + language: 'possessive_english', + }, + }, + + analyzer: { + natural: { + tokenizer: 'standard', + filter: %w( + lowercase + asciifolding + cjk_width + elision + english_possessive_stemmer + english_stop + english_stemmer + ), + }, + + sudachi_analyzer: { + tokenizer: 'standard', + filter: %w( + lowercase + asciifolding + cjk_width + elision + english_possessive_stemmer + english_stop + english_stemmer + ), + }, + + verbatim: { + tokenizer: 'standard', + filter: %w(lowercase asciifolding cjk_width), + }, + + edge_ngram: { + tokenizer: 'edge_ngram', + filter: %w(lowercase asciifolding cjk_width), + }, + }, + + tokenizer: { + edge_ngram: { + type: 'edge_ngram', + min_gram: 1, + max_gram: 15, + }, + }, + }.freeze + + PRODUCTION_SETTINGS = { filter: { english_stop: { type: 'stop', @@ -77,7 +142,9 @@ class AccountsIndex < Chewy::Index discard_punctuation: 'true', }, }, - } + }.freeze + + settings index: index_preset(refresh_interval: '30s'), analysis: Rails.env.test? ? DEVELOPMENT_SETTINGS : PRODUCTION_SETTINGS index_scope ::Account.searchable.includes(:account_stat)