我希望使用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全文搜索?
答案 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”:您的搜索}})