diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 6226fa5cdef..7b968b3914a 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2411,7 +2411,7 @@ en: status:openstatus:closedstatus:archivedstatus:norepliesstatus:singleuser category:foouser:foo in:likesin:postedin:watchingin:trackingin:private - in:bookmarks + in:bookmarksin:first posts_count:nummin_age:daysmax_age:days

diff --git a/lib/search.rb b/lib/search.rb index 7c02b5a1603..b5883a49d50 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -179,6 +179,9 @@ class Search posts.where("topics.posts_count = ?", match.to_i) end + advanced_filter(/in:first/) do |posts| + posts.where("posts.post_number = 1") + end advanced_filter(/in:(likes|bookmarks)/) do |posts, match| if @guardian.user diff --git a/spec/components/search_spec.rb b/spec/components/search_spec.rb index 82638fbf36f..1ded92fbc77 100644 --- a/spec/components/search_spec.rb +++ b/spec/components/search_spec.rb @@ -373,15 +373,20 @@ describe Search do describe 'Advanced search' do - it 'supports min_age and max_age' do + it 'supports min_age and max_age in:first' do topic = Fabricate(:topic, created_at: 3.months.ago) Fabricate(:post, raw: 'hi this is a test 123 123', topic: topic) + Fabricate(:post, raw: 'boom boom shake the room', topic: topic) expect(Search.execute('test min_age:100').posts.length).to eq(1) expect(Search.execute('test min_age:10').posts.length).to eq(0) expect(Search.execute('test max_age:10').posts.length).to eq(1) expect(Search.execute('test max_age:100').posts.length).to eq(0) + expect(Search.execute('test in:first').posts.length).to eq(1) + expect(Search.execute('boom').posts.length).to eq(1) + expect(Search.execute('boom in:first').posts.length).to eq(0) + end it 'can find by status' do