mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 11:23:25 +08:00
DEV: Add hidden site setting to configure search ranking weights (#20086)
This site setting is mostly experimental at this point.
This commit is contained in:
parent
bb35274984
commit
6934edd97c
|
@ -2202,6 +2202,9 @@ search:
|
|||
search_ranking_normalization:
|
||||
default: "0"
|
||||
hidden: true
|
||||
search_ranking_weights:
|
||||
default: ""
|
||||
hidden: true
|
||||
min_search_term_length:
|
||||
client: true
|
||||
default: 3
|
||||
|
|
|
@ -1134,6 +1134,7 @@ class Search
|
|||
elsif !is_topic_search
|
||||
rank = <<~SQL
|
||||
TS_RANK_CD(
|
||||
#{SiteSetting.search_ranking_weights.present? ? "'#{SiteSetting.search_ranking_weights}'," : ""}
|
||||
post_search_data.search_data,
|
||||
#{@term.blank? ? "" : ts_query(weight_filter: weights)},
|
||||
#{SiteSetting.search_ranking_normalization}|32
|
||||
|
|
|
@ -113,6 +113,28 @@ RSpec.describe Search do
|
|||
expect(Search.execute("oeuvre").posts).to contain_exactly(post_2)
|
||||
end
|
||||
end
|
||||
|
||||
context "when search_ranking_weights site setting has been configured" do
|
||||
fab!(:topic) { Fabricate(:topic, title: "Some random topic title start") }
|
||||
fab!(:topic2) { Fabricate(:topic, title: "Some random topic title") }
|
||||
fab!(:post1) { Fabricate(:post, raw: "start", topic: topic) }
|
||||
fab!(:post2) { Fabricate(:post, raw: "#{"start " * 100}", topic: topic2) }
|
||||
|
||||
before do
|
||||
SearchIndexer.enable
|
||||
[post1, post2].each { |post| SearchIndexer.index(post, force: true) }
|
||||
end
|
||||
|
||||
after { SearchIndexer.disable }
|
||||
|
||||
it "should apply the custom ranking weights correctly" do
|
||||
expect(Search.execute("start").posts).to eq([post2, post1])
|
||||
|
||||
SiteSetting.search_ranking_weights = "{0.00001,0.2,0.4,1.0}"
|
||||
|
||||
expect(Search.execute("start").posts).to eq([post1, post2])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "with apostrophes" do
|
||||
|
|
Loading…
Reference in New Issue
Block a user