adjust search index
This commit is contained in:
+21
-9
@@ -56,7 +56,7 @@ module SearchEntries
|
|||||||
end
|
end
|
||||||
|
|
||||||
[sql, number, number.length > 1 ? number.delete_prefix('0') : number, keyword]
|
[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)]
|
['tsvector @@ plainto_tsquery(?)', TextUtils.transliterate(keyword.downcase)]
|
||||||
else
|
else
|
||||||
keyword = TextUtils.transliterate(keyword.downcase).squish
|
keyword = TextUtils.transliterate(keyword.downcase).squish
|
||||||
@@ -180,15 +180,21 @@ module SearchEntries
|
|||||||
end
|
end
|
||||||
|
|
||||||
def index_template(template)
|
def index_template(template)
|
||||||
sql = SearchEntry.sanitize_sql_array(
|
text = TextUtils.transliterate(template.name.to_s.downcase.squish).delete("\0")
|
||||||
["SELECT to_tsvector(:text), to_tsvector('simple', :text)",
|
|
||||||
{ text: TextUtils.transliterate(template.name.to_s.downcase).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 = template.search_entry || template.build_search_entry
|
||||||
|
|
||||||
entry.account_id = template.account_id
|
entry.account_id = template.account_id
|
||||||
entry.tsvector, ngram = SearchEntry.connection.select_rows(sql).first
|
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)
|
entry.ngram = build_ngram(ngram)
|
||||||
|
|
||||||
return if entry.tsvector.blank?
|
return if entry.tsvector.blank?
|
||||||
@@ -205,15 +211,21 @@ module SearchEntries
|
|||||||
def index_submission(submission)
|
def index_submission(submission)
|
||||||
return if submission.name.blank?
|
return if submission.name.blank?
|
||||||
|
|
||||||
sql = SearchEntry.sanitize_sql_array(
|
text = TextUtils.transliterate(submission.name.to_s.downcase.squish).delete("\0")
|
||||||
["SELECT to_tsvector(:text), to_tsvector('simple', :text)",
|
|
||||||
{ text: TextUtils.transliterate(submission.name.to_s.downcase).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 = submission.search_entry || submission.build_search_entry
|
||||||
|
|
||||||
entry.account_id = submission.account_id
|
entry.account_id = submission.account_id
|
||||||
entry.tsvector, ngram = SearchEntry.connection.select_rows(sql).first
|
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)
|
entry.ngram = build_ngram(ngram)
|
||||||
|
|
||||||
return if entry.tsvector.blank?
|
return if entry.tsvector.blank?
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ module Submitters
|
|||||||
end
|
end
|
||||||
|
|
||||||
[sql, number, weight, number.length > 1 ? number.delete_prefix('0') : number, weight]
|
[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
|
terms = TextUtils.transliterate(keyword.downcase).split(/\b/).map(&:squish).compact_blank.uniq
|
||||||
|
|
||||||
if terms.size > 1
|
if terms.size > 1
|
||||||
|
|||||||
Reference in New Issue
Block a user