Pymongo如何使用全文搜索

时间:2018-01-21 19:50:09

标签: python mongodb pymongo

我希望使用pymongo在我的python应用程序中实现全文搜索。我一直在关注this question但由于某种原因,我无法在我的项目中实现此功能,因为我收到错误no such cmd: text。任何人都可以指导我做错了吗?

这是我的代码:

db = client.test
collection = db.videos
def search_for_videos(self, search_text)
    self.db.command("text", "videos", 
            search=search_text, 
            limit=10)

我尝试搜索的集合名为videos但是我不确定我是否将其放入正确的参数中,而且我也不确定是否需要行project={"name": 1, "_id": 0}

文档here我认为使用mongo shell来执行命令,但我希望在我的代码中执行此操作。

我已经看过使用db.videos.find()函数了,但似乎无法正确实现它。

如何从我的Python代码中使用PyMongo全文搜索?

2 个答案:

答案 0 :(得分:9)

首先要确保你在here字段上创建了一个文本索引,或者你也可以用pymongo来创建它:

collection.create_index([('your field', 'text')])

使用pymongo你可以这样做来搜索:

collection.find({"$text": {"$search": your search}})

你的功能应如下所示:

def search_for_videos(search_text):
    collection.find({"$text": {"$search": search_text}}).limit(10)

我希望这会对你有所帮助。

答案 1 :(得分:0)

首先根据要搜索的字段创建文本索引。

从pymongo导入文本

db = MongoClient('localhost',port = 27017).DBNAME

db.collection.create_index([[''FIELD_NAME',TEXT)],default_language =“ english”)

一旦创建文本索引,请使用以下查询搜索文本。根据数据库的大小,创建文本索引可能需要很长时间。

db.collection.find({“ $ text”:{“ $ search”:您的搜索}})