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:open | status:closed | status:archived | status:noreplies | status:singleuser |
category:foo | user:foo | |
in:likes | in:posted | in:watching | in:tracking | in:private |
- in:bookmarks | |
+ in:bookmarks | in:first | |
posts_count:num | min_age:days | max_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