mirror of
https://github.com/discourse/discourse.git
synced 2025-03-04 14:54:11 +08:00
FIX: advanced search ordering broken when using tags
This commit is contained in:
parent
a2b6eed284
commit
70d74f8fc1
@ -508,7 +508,7 @@ class Search
|
|||||||
WHERE tt.tag_id = tags.id
|
WHERE tt.tag_id = tags.id
|
||||||
GROUP BY tt.topic_id
|
GROUP BY tt.topic_id
|
||||||
HAVING to_tsvector(#{default_ts_config}, array_to_string(array_agg(tags.name), ' ')) @@ to_tsquery(#{default_ts_config}, ?)
|
HAVING to_tsvector(#{default_ts_config}, array_to_string(array_agg(tags.name), ' ')) @@ to_tsquery(#{default_ts_config}, ?)
|
||||||
)", tags.join('&')).order("id")
|
)", tags.join('&'))
|
||||||
else
|
else
|
||||||
tags = match.split(",")
|
tags = match.split(",")
|
||||||
|
|
||||||
@ -516,7 +516,7 @@ class Search
|
|||||||
SELECT DISTINCT(tt.topic_id)
|
SELECT DISTINCT(tt.topic_id)
|
||||||
FROM topic_tags tt, tags
|
FROM topic_tags tt, tags
|
||||||
WHERE tt.tag_id = tags.id AND tags.name IN (?)
|
WHERE tt.tag_id = tags.id AND tags.name IN (?)
|
||||||
)", tags).order("id")
|
)", tags)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -894,6 +894,22 @@ describe Search do
|
|||||||
expect(Search.execute('tags:eggs -tags:lunch,sandwiches').posts)
|
expect(Search.execute('tags:eggs -tags:lunch,sandwiches').posts)
|
||||||
.to contain_exactly(post1, post2)
|
.to contain_exactly(post1, post2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'orders posts correctly when combining tags with categories or terms' do
|
||||||
|
cat1 = Fabricate(:category, name: 'food')
|
||||||
|
topic6 = Fabricate(:topic, tags: [tag1, tag2], category: cat1)
|
||||||
|
topic7 = Fabricate(:topic, tags: [tag1, tag2, tag3], category: cat1)
|
||||||
|
post7 = Fabricate(:post, topic: topic6, raw: "Wakey, wakey, eggs and bakey.", like_count: 5)
|
||||||
|
post8 = Fabricate(:post, topic: topic7, raw: "Bakey, bakey, eggs to makey.", like_count: 2)
|
||||||
|
|
||||||
|
expect(Search.execute('bakey tags:lunch order:latest').posts.map(&:id))
|
||||||
|
.to eq([post8.id, post7.id])
|
||||||
|
expect(Search.execute('#food tags:lunch order:latest').posts.map(&:id))
|
||||||
|
.to eq([post8.id, post7.id])
|
||||||
|
expect(Search.execute('#food tags:lunch order:likes').posts.map(&:id))
|
||||||
|
.to eq([post7.id, post8.id])
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can find posts which contains filetypes" do
|
it "can find posts which contains filetypes" do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user