Switched out fuzzywuzzy for ulaunchers fuzzy search algorithm

This commit is contained in:
Vangelis Kostalas 2019-05-07 17:06:24 +03:00
parent 50f31ec1c3
commit 61ba0db659

19
main.py
View file

@ -4,7 +4,7 @@ sys.path.append("/home/zen/.local/lib/python2.7/site-packages/")
import os import os
import codecs import codecs
from fuzzywuzzy import process from ulauncher.search.SortedList import SortedList
from ulauncher.api.client.Extension import Extension from ulauncher.api.client.Extension import Extension
from ulauncher.api.client.EventListener import EventListener from ulauncher.api.client.EventListener import EventListener
@ -17,6 +17,13 @@ from ulauncher.api.shared.action.HideWindowAction import HideWindowAction
FILE_PATH = os.path.dirname(sys.argv[0]) FILE_PATH = os.path.dirname(sys.argv[0])
class SearchableItem:
def __init__(self, name, item):
self._name = name
self._item = item
def get_search_name(self):
return self._name
class UnicodeCharExtension(Extension): class UnicodeCharExtension(Extension):
def __init__(self): def __init__(self):
@ -26,17 +33,20 @@ class UnicodeCharExtension(Extension):
class KeywordQueryEventListener(EventListener): class KeywordQueryEventListener(EventListener):
def __init__(self): def __init__(self):
print('======'*40)
f = open(os.path.dirname(sys.argv[0]) + "/unicode_list.txt", "r") f = open(os.path.dirname(sys.argv[0]) + "/unicode_list.txt", "r")
data = f.readlines() data = f.readlines()
self.data = {} self.data = {}
# self.names = [] # self.names = []
self.items = [] self.items = []
self.items_ = []
# self.blocks = [] # self.blocks = []
for item in data: for item in data:
item = item.strip() item = item.strip()
name, code, block = item.split("\t") name, code, block = item.split("\t")
self.data[name + " " + block] = (name, block, code) self.data[name + " " + block] = (name, block, code)
self.items.append(name + " " + block) self.items.append(name + " " + block)
self.items_.append(SearchableItem(name , (name, block, code)))
# self.names.append(name) # self.names.append(name)
# self.blocks.append(block) # self.blocks.append(block)
@ -44,10 +54,11 @@ class KeywordQueryEventListener(EventListener):
items = [] items = []
arg = event.get_argument() arg = event.get_argument()
if arg: if arg:
matches = process.extract(arg, self.items, limit=15)
for m in matches: m_ = SortedList(arg, min_score=60, limit=10)
name, block, code = self.data[m[0]] m_.extend(self.items_)
for m in m_:
name, block, code = m._item
image_path = self.create_icon_image(code) image_path = self.create_icon_image(code)
items.append( items.append(
ExtensionResultItem( ExtensionResultItem(