MongoDB如何索引未标识为文本的字符串?例如,推文有许多文本字段,我为它们中的任何一个创建索引。在我的应用程序中,我创建了一个索引,用于编写推文的时间,编写的人以及推文的文本,但只将文本标识为文本索引。
import pymongo as pm
db.collection.create_index('created_at') # tweet creation time is a string
db.collection.create_index('user.screen_name') # user's screen name
db.collection.create_index([('text', pm.TEXT)]) # tweet text is a string
然而,我仍然可以搜索字符串字段。
db.collection.find({'user.screen_name': 'johndoe'})
为什么呢? MongoDB的文档说只能创建一个文本索引,那么字符串字段的索引和文本索引之间的区别是什么?
答案 0 :(得分:1)
from datetime import datetime
from apscheduler.scheduler import Scheduler
# Start the scheduler
sched = Scheduler()
sched.start()
def job_function():
print "Hello World"
# Schedule job_function to be called every two hours
sched.add_interval_job(job_function, hours=2)
# The same as before, but start after a certain time point
sched.add_interval_job(job_function, hours=2, start_date='2010-10-10 09:30')
索引适用于full-text search。实现稍微复杂一点,但认为它是字符串中每个单词的索引。
相反, plain 索引会立即索引整个字段。它们应该是您的默认选择 - 即使字段包含字符串 - 因为它们非常有效地搜索相等,范围或前缀。但是不要在字段中间检索单词。
根据您的示例,在用户名上使用普通索引,但在推文内容上使用全文索引是非常有意义的。