FIX: Topic.similar_to results in error if cooked raw is blank.

This commit is contained in:
Guo Xiang Tan 2020-08-21 10:51:37 +08:00
parent 2aa1482421
commit aae9e6e5fd
No known key found for this signature in database
GPG Key ID: FBD110179AAC1F20
2 changed files with 11 additions and 5 deletions

View File

@ -597,12 +597,14 @@ class Topic < ActiveRecord::Base
PrettyText.cook(raw[0...MAX_SIMILAR_BODY_LENGTH].strip) PrettyText.cook(raw[0...MAX_SIMILAR_BODY_LENGTH].strip)
) )
raw_tsquery = Search.set_tsquery_weight_filter( if cooked.present?
Search.prepare_data(cooked), raw_tsquery = Search.set_tsquery_weight_filter(
'B' Search.prepare_data(cooked),
) 'B'
)
tsquery = "#{tsquery} & #{raw_tsquery}" tsquery = "#{tsquery} & #{raw_tsquery}"
end
end end
tsquery = Search.to_tsquery(term: tsquery, joiner: "|") tsquery = Search.to_tsquery(term: tsquery, joiner: "|")

View File

@ -515,6 +515,10 @@ describe Topic do
end end
end end
it 'does not result in a syntax error when raw is blank after cooking' do
expect(Topic.similar_to('some title', '#')).to eq([])
end
context 'with a similar topic' do context 'with a similar topic' do
fab!(:post) { fab!(:post) {
SearchIndexer.enable SearchIndexer.enable