FIX: Handle case where `Post#raw` is blank in `Topic.similar_to`.

This commit is contained in:
Guo Xiang Tan 2020-07-28 13:23:53 +08:00
parent dcfe765dac
commit 4b21b5aac1
No known key found for this signature in database
GPG Key ID: FBD110179AAC1F20
2 changed files with 14 additions and 6 deletions

View File

@ -581,17 +581,21 @@ class Topic < ActiveRecord::Base
return [] if title.blank?
raw = raw.presence || ""
title_tsquery = Search.set_tsquery_weight_filter(
tsquery = Search.set_tsquery_weight_filter(
Search.prepare_data(title.strip),
'A'
)
raw_tsquery = Search.set_tsquery_weight_filter(
Search.prepare_data(raw[0...MAX_SIMILAR_BODY_LENGTH].strip),
'B'
)
if raw.present?
raw_tsquery = Search.set_tsquery_weight_filter(
Search.prepare_data(raw[0...MAX_SIMILAR_BODY_LENGTH].strip),
'B'
)
tsquery = Search.to_tsquery(term: "#{title_tsquery} & #{raw_tsquery}", joiner: "|")
tsquery = "#{tsquery} & #{raw_tsquery}"
end
tsquery = Search.to_tsquery(term: tsquery, joiner: "|")
candidates = Topic
.visible

View File

@ -531,6 +531,10 @@ describe Topic do
expect(Topic.similar_to("has evil trout made any topics?", "i am wondering has evil trout made any topics?")).to eq([topic])
end
it 'returns the similar topic even if raw is blank' do
expect(Topic.similar_to("has evil trout made any topics?", "")).to eq([topic])
end
it 'matches title against title and raw against raw when searching for topics' do
topic.update!(title: '1 2 3 numbered titles')
post.update!(raw: 'random toy poodle')