首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pymongo中文全文检索

Pymongo中文全文检索
EN

Stack Overflow用户
提问于 2017-07-13 16:31:57
回答 1查看 929关注 0票数 0

我知道Pymongo支持多种语言的文本搜索功能,例如英语、法语、德语……但它不适用于中文。在MongoDB 3.4 +Pymongo3.4环境下,有没有一种可行的方法实现中文全文检索?

EN

回答 1

Stack Overflow用户

发布于 2017-07-13 17:17:37

我认为pymongo免费版不支持中文全文搜索的主要原因是中文分词困难。我有一个间接的方法来解决Pymongo的中文全文搜索问题。人们可以在将语料库存储到MongoDB或从MongoDB中搜索句子之前完成切分。jieba模块是我强烈推荐的中文分词模块。这里有一个自包含的简单示例,它在某种程度上适用于我。

代码语言:javascript
复制
from pymongo import MongoClient
from pymongo import TEXT
import jieba
client = MongoClient()
dialogs = client['db']['dialogs_zh_fulltext']
d1 = {
    'text_in': '你 早上 吃 的 什么 ?',
    'text_out': '我 吃 的 鸡蛋',
}
d2 = {
    'text_in': '你 今天 准备 去 哪 ?',
    'text_out': '我 要 回家',
}
dialogs.insert_many([d1,d2])
dialogs.create_index([('text_in', TEXT)], default_language='en')
keywords = ' '.join(jieba.lcut('你今天早上去哪了?'))
print('keywords: {}'.format(keywords))
cursor = dialogs.find({'$text': {'$search':keywords}}, {'score':{'$meta':'textScore'}})
for x in cursor.sort([('score', {'$meta':'textScore'})]):
    print(x)

输出:

代码语言:javascript
复制
keywords: 你 今天 早上 去 哪 了 ?
{'_id': ObjectId('59673a0d5975ae05e9b27dd8'), 'text_in': '你 今天 准备 去 哪 ?', 'text_out': '我 要 回家', 'score': 2.4}
{'_id': ObjectId('59673a0d5975ae05e9b27dd7'), 'text_in': '你 早上 吃 的 什么 ?', 'text_out': '我 吃 的 鸡蛋', 'score': 1.2}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45075405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档