mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 12:03:45 +08:00
FIX: Don't inject extra terms for version lexeme.
This commit is contained in:
parent
ce53180c3b
commit
b70f1084f7
|
@ -59,13 +59,15 @@ class SearchIndexer
|
|||
tsvector.scan(/'(([a-zA-Z0-9]+\.)+[a-zA-Z0-9]+)'\:([\w+,]+)/).reduce(additional_lexemes) do |array, (lexeme, _, positions)|
|
||||
count = 0
|
||||
|
||||
loop do
|
||||
count += 1
|
||||
break if count >= 10 # Safeguard here to prevent infinite loop when a term has many dots
|
||||
term, _, remaining = lexeme.partition(".")
|
||||
break if remaining.blank?
|
||||
array << "'#{term}':#{positions} '#{remaining}':#{positions}"
|
||||
lexeme = remaining
|
||||
if lexeme !~ /^(\d+\.)?(\d+\.)?(\*|\d+)$/
|
||||
loop do
|
||||
count += 1
|
||||
break if count >= 10 # Safeguard here to prevent infinite loop when a term has many dots
|
||||
term, _, remaining = lexeme.partition(".")
|
||||
break if remaining.blank?
|
||||
array << "'#{term}':#{positions} '#{remaining}':#{positions}"
|
||||
lexeme = remaining
|
||||
end
|
||||
end
|
||||
|
||||
array
|
||||
|
|
|
@ -141,6 +141,15 @@ describe SearchIndexer do
|
|||
)
|
||||
end
|
||||
|
||||
it 'should not tokenize versions' do
|
||||
post.topic.update!(title: "this is a title that I am testing")
|
||||
post.update!(raw: '1.2.2')
|
||||
|
||||
expect(post.post_search_data.search_data).to eq(
|
||||
"'1.2.2':10 'test':8A 'titl':4A 'uncategor':9B"
|
||||
)
|
||||
end
|
||||
|
||||
it 'should tokenize host of a URL and removes query string' do
|
||||
category = Fabricate(:category, name: 'awesome category')
|
||||
topic = Fabricate(:topic, category: category, title: 'this is a test topic')
|
||||
|
|
Loading…
Reference in New Issue
Block a user