class SearchEngineBase(object):
def __init__(self):
pass
def add_corpus(self, file_path):
with open(file_path, 'r') as fin:
text = fin.read()
self.process_corpus(file_path, text)
def process_corpus(self, id, text):
raise Exception('process_corpus not implemented.')
def search(self, query):
raise Exception('search not implemented.')
def main(search_engine):
for file_path in ['1.txt', '2.txt', '3.txt', '4.txt', '5.txt']:
##遍歷文件,將文件的內容放到字典,健 爲文件名,值爲內容
search_engine.add_corpus(file_path)
while True:
query = input()
results = search_engine.search(query)
print('found {} result(s):'.format(len(results)))
for result in results:
print(result)
class SimpleEngine(SearchEngineBase):
def __init__(self):
##調用父類的構造函數
super(SimpleEngine, self).__init__()
self.__id_to_texts = {}
def process_corpus(self, id, text):
##鍵值爲文件名,內容爲值
self.__id_to_texts[id] = text
def search(self, query):
results = []
##搜索的詞出現在字典的值中 返回內容
for id, text in self.__id_to_texts.items():
if query in text:
results.append(id)
return results
search_engine = SimpleEngine()
main(search_engine)
########## 輸出 ##########
simple
found 0 result(s):
little
found 2 result(s):
1.txt
2.txt