mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 03:25:47 +08:00
40c6d90df3
With the addition of `PostSearchData#private_message`, a partial index consisting of only search data from regular posts can be created. The partial index helps to speed up searches on large sites since PG will not have to do an index scan on the entire search data index which has shown to be a bottle neck.
46 lines
1.1 KiB
Ruby
46 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe Jobs::CreateRecentPostSearchIndexes do
|
|
subject { described_class.new }
|
|
|
|
fab!(:post) do
|
|
SearchIndexer.enable
|
|
Fabricate(:post)
|
|
end
|
|
|
|
fab!(:post_2) do
|
|
SearchIndexer.enable
|
|
Fabricate(:post)
|
|
end
|
|
|
|
before do
|
|
SearchIndexer.enable
|
|
end
|
|
|
|
describe '#execute' do
|
|
it 'should not create the index if requried posts size has not been reached' do
|
|
SiteSetting.search_recent_posts_size = 1
|
|
SiteSetting.search_enable_recent_regular_posts_offset_size = 3
|
|
|
|
expect do
|
|
subject.execute({})
|
|
end.to_not change { SiteSetting.search_recent_regular_posts_offset_post_id }
|
|
end
|
|
|
|
it 'should create the right index' do
|
|
SiteSetting.search_recent_posts_size = 1
|
|
SiteSetting.search_enable_recent_regular_posts_offset_size = 1
|
|
|
|
subject.execute({})
|
|
|
|
expect(SiteSetting.search_recent_regular_posts_offset_post_id).to eq(post_2.id)
|
|
|
|
expect(DB.query_single(<<~SQL).first).to eq(1)
|
|
SELECT 1 FROM pg_indexes WHERE indexname = '#{described_class::REGULAR_POST_SEARCH_DATA_INDEX_NAME}'
|
|
SQL
|
|
end
|
|
end
|
|
end
|