mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
#403 weight exact matches over start of key matches
This commit is contained in:
parent
7683293c5e
commit
75c77cc5b5
@ -117,7 +117,7 @@ local function new_view(root)
|
|||||||
|
|
||||||
function func_ref.run_search()
|
function func_ref.run_search()
|
||||||
local query = string.lower(query_field.get_value())
|
local query = string.lower(query_field.get_value())
|
||||||
local s_results = { {}, {}, {} }
|
local s_results = { {}, {}, {}, {} }
|
||||||
|
|
||||||
search_results.remove_all()
|
search_results.remove_all()
|
||||||
|
|
||||||
@ -129,24 +129,29 @@ local function new_view(root)
|
|||||||
local start = util.time_ms()
|
local start = util.time_ms()
|
||||||
|
|
||||||
for _, entry in ipairs(search_db) do
|
for _, entry in ipairs(search_db) do
|
||||||
local s_start, _ = string.find(entry[1], query, 1, true)
|
local s_start, s_end = string.find(entry[1], query, 1, true)
|
||||||
|
|
||||||
if s_start == nil then
|
if s_start == nil then
|
||||||
elseif s_start == 1 then
|
elseif s_start == 1 then
|
||||||
-- best match, start of key
|
if s_end == string.len(entry[1]) then
|
||||||
|
-- best match: full match
|
||||||
table.insert(s_results[1], entry)
|
table.insert(s_results[1], entry)
|
||||||
|
else
|
||||||
|
-- very good match, start of key
|
||||||
|
table.insert(s_results[2], entry)
|
||||||
|
end
|
||||||
elseif string.sub(query, s_start - 1, s_start) == " " then
|
elseif string.sub(query, s_start - 1, s_start) == " " then
|
||||||
-- start of word, good match
|
-- start of word, good match
|
||||||
table.insert(s_results[2], entry)
|
table.insert(s_results[3], entry)
|
||||||
else
|
else
|
||||||
-- basic match in content
|
-- basic match in content
|
||||||
table.insert(s_results[3], entry)
|
table.insert(s_results[4], entry)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local empty = true
|
local empty = true
|
||||||
|
|
||||||
for tier = 1, 3 do
|
for tier = 1, 4 do
|
||||||
for idx = 1, #s_results[tier] do
|
for idx = 1, #s_results[tier] do
|
||||||
local entry = s_results[tier][idx]
|
local entry = s_results[tier][idx]
|
||||||
TextBox{parent=search_results,text=entry[3].." >",fg_bg=cpair(colors.gray,colors.black)}
|
TextBox{parent=search_results,text=entry[3].." >",fg_bg=cpair(colors.gray,colors.black)}
|
||||||
|
Loading…
Reference in New Issue
Block a user