MAI/LabWork01/LabWork4/SiteSearch.py

31 lines
1.4 KiB
Python
Raw Normal View History

from LabWork01.LabWork4.BloomFilter import BloomFilter
class SiteSearch:
def __init__(self):
self.filter: BloomFilter = BloomFilter(100000, 5)
self.keyword_urls: dict[str, list[str]] = {}
2023-10-26 16:05:43 +04:00
# для всех слов-ассоциаций проводим добавление в фильтр Блума и назначаем к каждому нужную ссылку на ресурс
def add(self, url: str, keywords: list[str]) -> None:
for keyword in keywords:
lowercase_string = keyword.lower()
self.filter.add(lowercase_string)
if lowercase_string not in self.keyword_urls:
self.keyword_urls[lowercase_string] = []
self.keyword_urls[lowercase_string].append(url)
2023-10-26 16:05:43 +04:00
# проводим поиск по слову-ключу в словаре
def find_url(self, keyword: str) -> list[str]:
lowercase_string = keyword.lower()
if self.filter.contains(lowercase_string):
return self.keyword_urls.get(lowercase_string)
else:
return []
2023-10-26 16:05:43 +04:00
# проверка на содержание слова-ключа в словаре
def contains(self, keyword: str) -> list[str]:
lowercase_string = keyword.lower()
if self.filter.contains(lowercase_string):
return True
else:
return False