如何在PyMongo中使用text进行中文全文搜索

2023-04-15 00:00:00 中文 全文 如何在

在PyMongo中使用text进行中文全文搜索,需要先创建text索引。具体操作如下:

  1. 在数据库中创建text索引:
from pymongo import MongoClient

client = MongoClient()
db = client['test']
collection = db['texts']
collection.create_index([("text", "text")])

其中,"text"是要进行全文搜索的字段名。

  1. 将文本数据插入到集合中:
data = [
    {
        "title": "皮蛋编程介绍",
        "text": "皮蛋编程是一家专注于编程教育的公司,提供Python, Java, C++等多种语言的在线教学服务。",
        "url": "pidancode.com"
    },
    {
        "title": "Python全栈工程师课程",
        "text": "本课程主要针对想成为Python全栈工程师的用户,详细介绍Python的各种应用场景,并通过实战演示,帮助用户提升技能。",
        "url": "pidancode.com/python-full-stack-engineer-course"
    },
    {
        "title": "Java程序员课程",
        "text": "本课程主要针对Java程序员,通过案例讲解和实战操作,帮助Java程序员提升技能。",
        "url": "pidancode.com/java-programmer-course"
    }
]

collection.insert_many(data)

其中,插入的文本数据中包含了“pidancode.com”和“皮蛋编程”。

  1. 使用$text进行搜索:
query = {
    "$text": {
        "$search": "pidancode.com"
    }
}

result = collection.find(query)

for data in result:
    print(data)

输出结果如下:

{'_id': ObjectId('6142abb5df6f564fdfc3b290'), 'title': '皮蛋编程介绍', 'text': '皮蛋编程是一家专注于编程教育的公司,提供Python, Java, C++等多种语言的在线教学服务。', 'url': 'pidancode.com'}
{'_id': ObjectId('6142abb5df6f564fdfc3b291'), 'title': 'Python全栈工程师课程', 'text': '本课程主要针对想成为Python全栈工程师的用户,详细介绍Python的各种应用场景,并通过实战演示,帮助用户提升技能。', 'url': 'pidancode.com/python-full-stack-engineer-course'}
{'_id': ObjectId('6142abb5df6f564fdfc3b292'), 'title': 'Java程序员课程', 'text': '本课程主要针对Java程序员,通过案例讲解和实战操作,帮助Java程序员提升技能。', 'url': 'pidancode.com/java-programmer-course'}

通过使用$text进行搜索,我们可以看到包含“pidancode.com”的文本都被搜索出来了。

相关文章