diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-08-16 13:00:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-16 13:00:30 +0200 |
commit | 70da6d663078fb7d04aed387ac085afb2e9e2cd2 (patch) | |
tree | aca79c42569a43f9ecbf3460243dd7a03ee55f6f /app/chewy | |
parent | 6e872c6dabf12fdd2619d4042495e52edd6079bd (diff) |
Fix accounts search by full/partial display name and others (#11580)
- Restrict followers counts to local users to minimize local advantage - Fix emoji shortcodes causing error in search - Fix search syntax parse errors not being caught
Diffstat (limited to 'app/chewy')
-rw-r--r-- | app/chewy/accounts_index.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/app/chewy/accounts_index.rb b/app/chewy/accounts_index.rb index e11b80039..b814e009e 100644 --- a/app/chewy/accounts_index.rb +++ b/app/chewy/accounts_index.rb @@ -26,10 +26,17 @@ class AccountsIndex < Chewy::Index define_type ::Account.searchable.includes(:account_stat), delete_if: ->(account) { account.destroyed? || !account.searchable? } do root date_detection: false do field :id, type: 'long' - field :display_name, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' - field :acct, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content', value: ->(account) { [account.username, account.domain].compact.join('@') } - field :following_count, type: 'long', value: ->(account) { account.active_relationships.count } - field :followers_count, type: 'long', value: ->(account) { account.passive_relationships.count } + + field :display_name, type: 'text', analyzer: 'content' do + field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' + end + + field :acct, type: 'text', analyzer: 'content', value: ->(account) { [account.username, account.domain].compact.join('@') } do + field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' + end + + field :following_count, type: 'long', value: ->(account) { account.following.local.count } + field :followers_count, type: 'long', value: ->(account) { account.followers.local.count } field :last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at } end end |