E-book viewer: Fix searching for short strings in text with lots of similar entries displaying incorrect matches. Fixes #1931566 [some bad search results using regex](https://bugs.launchpad.net/calibre/+bug/1931566)

Up the amount of context used for matches from 10 to 30 chars to
reduce probability of false matching.
This commit is contained in:
Kovid Goyal 2021-06-23 17:18:35 +05:30
parent 844457e32e
commit e7397bda52
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 4 additions and 4 deletions

View File

@ -691,7 +691,7 @@ class SearchPanel(QWidget): # {{{
try:
for i, result in enumerate(search_in_name(name, search_query)):
before, text, after, offset = result
q = (before or '')[-5:] + text + (after or '')[:5]
q = (before or '')[-15:] + text + (after or '')[:15]
result_num += 1
self.results_found.emit(SearchResult(search_query, before, text, after, q, name, idx, counter[q], offset, result_num))
counter[q] += 1

View File

@ -153,11 +153,11 @@ def select_search_result(sr):
q = ''
before_len = after_len = 0
if sr.before:
q = sr.before[-5:]
q = sr.before[-15:]
before_len = q.length
q += sr.text
if sr.after:
after = sr.after[:5]
after = sr.after[:15]
after_len = after.length
q += after
match = find_specific_occurrence(q, int(sr.index), before_len, after_len, cache.text_map, sr.from_offset)

View File

@ -168,7 +168,7 @@ def search_in_text_of(name):
start, end = m.index, r.lastIndex
before = haystack[Math.max(0, start - ctx_size):start]
after = haystack[end:end+ctx_size]
q = (before or '')[-5:] + text + (after or '')[:5]
q = (before or '')[-15:] + text + (after or '')[:15]
match_counts[q] = match_counts[q] or 0
wc.result_num += 1
result = {