Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit 249850a

Browse files
committed
Support region name filter and aggs for search
1 parent e0301d3 commit 249850a

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

lib/steno/elasticsearch.rb

+14-9
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ def define_mapping!
7575
})
7676
end
7777

78-
def search(q, from=0, size=10)
78+
def search(q, from=0, size=10, region_name=nil)
79+
filters = {}
80+
filters = {term: {region_name: region_name}} if region_name
81+
7982
@es.search(index: @ix, body: {
8083
query: {
8184
multi_match: {
@@ -84,9 +87,18 @@ def search(q, from=0, size=10)
8487
fields: ['title', 'content'],
8588
}
8689
},
87-
fields: ['frbr_uri', 'repealed', 'published_on', 'title', 'url', 'region_name'],
90+
fields: ['frbr_uri', 'repealed', 'published_on', 'title', 'url', 'region_name', 'region'],
91+
from: from,
92+
size: size,
93+
sort: {'_score' => {order: 'desc'}},
94+
# filter after searching so filtering doesn't impact aggs
95+
post_filter: filters,
96+
# count by region name
97+
aggs: {region_names: {terms: {field: 'region_name'}}},
8898
highlight: {
8999
order: "score",
100+
pre_tags: ['<mark>'],
101+
post_tags: ['</mark>'],
90102
fields: {
91103
content: {
92104
fragment_size: 80,
@@ -96,14 +108,7 @@ def search(q, from=0, size=10)
96108
number_of_fragments: 0, # entire field
97109
}
98110
},
99-
pre_tags: ['<mark>'],
100-
post_tags: ['</mark>'],
101111
},
102-
from: from,
103-
size: size,
104-
sort: {
105-
'_score' => {order: 'desc'}
106-
}
107112
})
108113
end
109114
end

steno_app.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ class StenoApp < Sinatra::Base
235235
}.to_json
236236
end
237237

238-
results = Steno::Search.searcher.search(params[:q])
238+
results = Steno::Search.searcher.search(params[:q], 0, 10, params[:region_name])
239239

240240
return results.to_json
241241
end

0 commit comments

Comments
 (0)