adjust search index
This commit is contained in:
+21
-9
@@ -56,7 +56,7 @@ module SearchEntries
|
||||
end
|
||||
|
||||
[sql, number, number.length > 1 ? number.delete_prefix('0') : number, keyword]
|
||||
elsif keyword.match?(/[^\p{L}\d&@._\-]/) || keyword.match?(/\A['"].*['"]\z/)
|
||||
elsif keyword.match?(/[^\p{L}\d&@.\-]/) || keyword.match?(/\A['"].*['"]\z/)
|
||||
['tsvector @@ plainto_tsquery(?)', TextUtils.transliterate(keyword.downcase)]
|
||||
else
|
||||
keyword = TextUtils.transliterate(keyword.downcase).squish
|
||||
@@ -180,15 +180,21 @@ module SearchEntries
|
||||
end
|
||||
|
||||
def index_template(template)
|
||||
sql = SearchEntry.sanitize_sql_array(
|
||||
["SELECT to_tsvector(:text), to_tsvector('simple', :text)",
|
||||
{ text: TextUtils.transliterate(template.name.to_s.downcase).delete("\0") }]
|
||||
)
|
||||
text = TextUtils.transliterate(template.name.to_s.downcase.squish).delete("\0")
|
||||
|
||||
sql = SearchEntry.sanitize_sql_array(["SELECT to_tsvector(:text), to_tsvector('simple', :text)", { text: }])
|
||||
|
||||
entry = template.search_entry || template.build_search_entry
|
||||
|
||||
entry.account_id = template.account_id
|
||||
entry.tsvector, ngram = SearchEntry.connection.select_rows(sql).first
|
||||
|
||||
hyphens = text.scan(/\b[^\s]*?\d-[^\s]+?\b/) + text.scan(/\b[^\s]+-\d[^\s]*?\b/)
|
||||
|
||||
hyphens.uniq.each_with_index do |item, index|
|
||||
entry.tsvector += " '#{item.delete("'")}':#{index + 1}" unless entry.tsvector.include?(item)
|
||||
end
|
||||
|
||||
entry.ngram = build_ngram(ngram)
|
||||
|
||||
return if entry.tsvector.blank?
|
||||
@@ -205,15 +211,21 @@ module SearchEntries
|
||||
def index_submission(submission)
|
||||
return if submission.name.blank?
|
||||
|
||||
sql = SearchEntry.sanitize_sql_array(
|
||||
["SELECT to_tsvector(:text), to_tsvector('simple', :text)",
|
||||
{ text: TextUtils.transliterate(submission.name.to_s.downcase).delete("\0") }]
|
||||
)
|
||||
text = TextUtils.transliterate(submission.name.to_s.downcase.squish).delete("\0")
|
||||
|
||||
sql = SearchEntry.sanitize_sql_array(["SELECT to_tsvector(:text), to_tsvector('simple', :text)", { text: }])
|
||||
|
||||
entry = submission.search_entry || submission.build_search_entry
|
||||
|
||||
entry.account_id = submission.account_id
|
||||
entry.tsvector, ngram = SearchEntry.connection.select_rows(sql).first
|
||||
|
||||
hyphens = text.scan(/\b[^\s]*?\d-[^\s]+?\b/) + text.scan(/\b[^\s]+-\d[^\s]*?\b/)
|
||||
|
||||
hyphens.uniq.each_with_index do |item, index|
|
||||
entry.tsvector += " '#{item.delete("'")}':#{index + 1}" unless entry.tsvector.include?(item)
|
||||
end
|
||||
|
||||
entry.ngram = build_ngram(ngram)
|
||||
|
||||
return if entry.tsvector.blank?
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ module Submitters
|
||||
end
|
||||
|
||||
[sql, number, weight, number.length > 1 ? number.delete_prefix('0') : number, weight]
|
||||
elsif keyword.match?(/[^\p{L}\d&@._\-]/)
|
||||
elsif keyword.match?(/[^\p{L}\d&@.\-]/)
|
||||
terms = TextUtils.transliterate(keyword.downcase).split(/\b/).map(&:squish).compact_blank.uniq
|
||||
|
||||
if terms.size > 1
|
||||
|
||||
Reference in New Issue
Block a user