制作一个简单的Python搜索引擎,你可以遵循以下步骤。这个搜索引擎会允许用户在一个文本数据库(如本地文件或网页内容)中搜索关键词,并返回相关的结果。
---
步骤1: 定义需求
1. 数据来源:文本文件、网页、数据库?
2. 搜索机制:关键词搜索,全文索引,还是更高级的自然语言处理?
3. 结果展示:高亮匹配内容、排序?
这里,我们将用关键词匹配的方式,创建一个简单的搜索引擎。
---
步骤2: 数据准备
示例:
假设我们有多个文本文件(`documents/` 文件夹),每个文件包含一些文本内容。
1. 文件目录结构:
documents/
├── doc1.txt
├── doc2.txt
└── doc3.txt
2. 文本内容:
- `doc1.txt`:Python 是一种解释型编程语言。
- `doc2.txt`:搜索引擎利用索引提高效率。
- `doc3.txt`:Google 是著名的搜索引擎。
---
步骤3: 基本搜索引擎实现
python
import os
# 1. 数据加载:读取所有文本文件内容
def load_documents(directory):
documents = {}
for filename in os.listdir(directory):
if filename.endswith('.txt'): # 只读取txt文件
with open(os.path.join(directory, filename), 'r', encoding='utf-8') as file:
documents[filename] = file.read()
return documents
# 2. 关键词搜索函数
def search_documents(documents, keyword):
results = {}
for filename, content in documents.items():
if keyword.lower() in content.lower(): # 忽略大小写
results[filename] = content
return results
# 3. 主程序
def main():
data_dir = 'documents' # 文件夹路径
keyword = input("请输入要搜索的关键词:") # 获取用户输入的搜索关键词
print("\n加载文件...")
documents = load_documents(data_dir)
print(f"已加载 {len(documents)} 个文档。\n")
print(f"正在搜索关键词 '{keyword}' ...")
search_results = search_documents(documents, keyword)
# 4. 输出搜索结果
if search_results:
print("\n搜索结果:")
for filename, content in search_results.items():
print(f"\n文件名: {filename}")
print(f"内容预览: {content[:100]} ...") # 预览前100字符
else:
print("未找到匹配的内容!")
if __name__ == "__main__":
main()
---
代码解释
1. 数据加载:
- 通过 `os.listdir()` 遍历 `documents` 文件夹下的 `.txt` 文件。
- 读取每个文件内容并存储在 `documents` 字典中,键为文件名,值为文件内容。
2. 关键词搜索:
- 遍历 `documents` 字典,检查关键词是否在内容中出现。
- `lower()` 函数确保不区分大小写。
3. 结果输出:
- 如果找到匹配文件,打印文件名及内容预览(前100个字符)。
- 如果没有匹配项,提示用户未找到结果。
---
示例运行
假设我们搜索关键词 `搜索引擎`:
plaintext
请输入要搜索的关键词:搜索引擎
加载文件...
已加载 3 个文档。
正在搜索关键词 '搜索引擎' ...
搜索结果:
文件名: doc2.txt
内容预览: 搜索引擎利用索引提高效率 ...
文件名: doc3.txt
内容预览: Google 是著名的搜索引擎 ...
---
扩展功能建议
1. 全文索引:使用倒排索引(Inverted Index)提高搜索速度。
2. 高级匹配:实现模糊搜索(如引入 `fuzzywuzzy` 库)。
3. 网页爬取:爬取网页内容作为搜索数据源(使用 `requests` 和 `BeautifulSoup` 库)。
4. 结果排序:按关键词匹配次数排序。
---
下一步:引入全文搜索引擎库
对于更复杂的场景,你可以使用全文搜索引擎库:
- Whoosh:轻量级Python搜索库。
- Elasticsearch:支持大规模数据搜索的强大工具。
我可以继续帮你实现更高级的功能或提供代码示例,告诉我你的需求!
查看详情
查看详情