鱼C论坛

 找回密码
 立即注册
查看: 1490|回复: 3

[已解决]用python做一个很简单的搜索引擎

[复制链接]
发表于 2020-7-29 08:12:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有没有大佬会用python做一个简单的搜索引擎,这个是我们的期末作业report7,会的还请帮一下孩子
问题,保存好3个文件file1.txt、file2.txt、file3.txt,文件里的内容:
file1.txt:the cat sat on the mat
file2.txt:the dog stood on the mat
file3.txt:the cat stood while a dog sat
然后通过自己写一段代码

需要实现的目标结果
下面是一个实现后的Python代码示例
>>> import report7
>>> filenames = ['file1.txt', 'file2.txt', 'file3.txt']

index生成部
>>> index = report7.make_index(filenames)
>>> print(len(index))
9
>>> print(index)
{'the': ['file1.txt', 'file2.txt', 'file3.txt'], 'cat': ['file1.txt', 'file3.txt'], 'sat': ['file1.txt', 'file3.txt'], 'on': ['file1.txt', 'file2.txt'], 'mat': ['file1.txt', 'file2.txt'], 'dog': ['file2.txt', 'file3.txt'], 'stood': ['file2.txt', 'file3.txt'], 'while': ['file3.txt'], 'a': ['file3.txt']}

匹配部1: 「cat」搜索结果
>>> print(report7.search_words(index, ['cat']))
['file1.txt', 'file3.txt']
匹配部2: 「cat dog」搜索结果
>>> print(report7.search_words(index, ['cat', 'dog']))
['file3.txt']
如果输入「hoge」这个词在3个文件中都是没有的,所以搜索结果
>>> print(report7.search_words(index, ['hoge']))
None
>>> print(type(report7.search_words(index, ['hoge'])))
<class 'NoneType'>
*注意,它不返回字符串“ None”,而是返回class的NoneType。

函数名1: make_index

函数名2: search_words

有大佬会的话还请帮下小弟,万分感谢!

最佳答案
2020-7-29 08:59:45
一条小蟒蛇, 发表于 2020-7-29 08:23
通过写代码来实现下面那些的内容
老师只给出了要求和要实现的目标
怎么实现那个目标的代码需要自己来写



看看这个能不能达到要求吧:

  1. def make_index(filenames):
  2.     word_dict = {}
  3.     for filename in filenames:
  4.         with open(filename,encoding='utf-8') as file:
  5.             word_list = file.read().split()
  6.             for word in set(word_list):
  7.                 if word not in word_dict.keys():
  8.                     word_dict[word] = [filename]
  9.                 else:
  10.                     word_dict[word].append(filename)
  11.     return word_dict


  12. def search_words(word_dict,word_list):
  13.     items_ = word_dict.items()
  14.     filenames = []
  15.     for i in items_:
  16.         if i[0] in word_list:
  17.             filenames.append(i[1])
  18.     result = set()
  19.     for i in filenames:
  20.         if result == set():
  21.             result |= set(i)
  22.             continue
  23.         result &= set(i)
  24.     if result == set():
  25.         return None
  26.     return list(result)

  27. """_______测试使用时候删掉以下内容_________________"""
  28. filenames = ['file1.txt', 'file2.txt', 'file3.txt']
  29. index = make_index(filenames)
  30. print(index)
  31. print(search_words(index,['cat','dog']))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-29 08:17:20 | 显示全部楼层
本帖最后由 1q23w31 于 2020-7-29 08:19 编辑

要做什么?这不都有代码,写一个report7?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-29 08:23:10 | 显示全部楼层
1q23w31 发表于 2020-7-29 08:17
要做什么?这不都有代码,写一个report7?

通过写代码来实现下面那些的内容
老师只给出了要求和要实现的目标
怎么实现那个目标的代码需要自己来写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 08:59:45 | 显示全部楼层    本楼为最佳答案   
一条小蟒蛇, 发表于 2020-7-29 08:23
通过写代码来实现下面那些的内容
老师只给出了要求和要实现的目标
怎么实现那个目标的代码需要自己来写



看看这个能不能达到要求吧:

  1. def make_index(filenames):
  2.     word_dict = {}
  3.     for filename in filenames:
  4.         with open(filename,encoding='utf-8') as file:
  5.             word_list = file.read().split()
  6.             for word in set(word_list):
  7.                 if word not in word_dict.keys():
  8.                     word_dict[word] = [filename]
  9.                 else:
  10.                     word_dict[word].append(filename)
  11.     return word_dict


  12. def search_words(word_dict,word_list):
  13.     items_ = word_dict.items()
  14.     filenames = []
  15.     for i in items_:
  16.         if i[0] in word_list:
  17.             filenames.append(i[1])
  18.     result = set()
  19.     for i in filenames:
  20.         if result == set():
  21.             result |= set(i)
  22.             continue
  23.         result &= set(i)
  24.     if result == set():
  25.         return None
  26.     return list(result)

  27. """_______测试使用时候删掉以下内容_________________"""
  28. filenames = ['file1.txt', 'file2.txt', 'file3.txt']
  29. index = make_index(filenames)
  30. print(index)
  31. print(search_words(index,['cat','dog']))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-24 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表