diff --git a/app/models/topic.rb b/app/models/topic.rb
index 3e8c333c36c..67a4ab2f2c6 100644
--- a/app/models/topic.rb
+++ b/app/models/topic.rb
@@ -597,9 +597,11 @@ class Topic < ActiveRecord::Base
         PrettyText.cook(raw[0...MAX_SIMILAR_BODY_LENGTH].strip)
       )
 
-      if cooked.present?
+      prepared_data = cooked.present? && Search.prepare_data(cooked)
+
+      if prepared_data.present?
         raw_tsquery = Search.set_tsquery_weight_filter(
-          Search.prepare_data(cooked),
+          prepared_data,
           'B'
         )
 
diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb
index 72d1583790d..7ad36476dfb 100644
--- a/spec/models/topic_spec.rb
+++ b/spec/models/topic_spec.rb
@@ -519,6 +519,10 @@ describe Topic do
       expect(Topic.similar_to('some title', '#')).to eq([])
     end
 
+    it 'does not result in invalid statement when prepared data is blank' do
+      expect(Topic.similar_to('some title', 'https://discourse.org/#INCORRECT#URI')).to be_empty
+    end
+
     context 'with a similar topic' do
       fab!(:post) {
         SearchIndexer.enable