mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
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:
parent
844457e32e
commit
e7397bda52
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user