Я writitng статьи, ее содержание и ключевых слов в базу данных MongoDB с помощью Python..now пользователя может дать мне ключевое слово, мне нужно, чтобы найти статьи, содержащие эти ключевые слова ..PyMongo и элементы в БД
Я wrting к БД, как показано ниже:
myrecord = {"Link": link,
"Title": title,
"HeadLine": headline,
"BodyText":innerBodyText,
"Keywords":keywords,
"date": datetime.datetime.utcnow()
}
try:
print("Inserting the record in the DB")
result = my_collection.insert_one(myrecord, False)
ключевых слов является список bnary кортежа
[("africa",3),("content",5),...]
Я хотел бы знать, мотыга для осуществления выше usecases..I для travese нужду всех записей в БД, чтобы найти статьи га ving определенное ключевое слово
Подпись ниже uery для этого?
def getArticlesbyKeywords(self,keyword,showBody=False):
client = pymongo.MongoClient(
"mongodb://mahdi:[email protected]:15312,aws-ap-southeast-1-portal.0.dblayer.com:15312/BBCArticles?ssl=true",
ssl_cert_reqs=ssl.CERT_NONE)
mydb = client['BBCArticles']
my_collection = mydb['Articles']
my_collection.create_index([("Keywords.key", "text")])
print 'Articles containing higher occurences of the keyword is sorted as follow:'
for doc in my_collection.find({"$text": {"$search": keyword}}).sort({"score": {"$meta": "textScore"}}):
print(doc))
Я получаю ниже ошибки:
Traceback (most recent call last):
File "api_access.py", line 21, in <module>
api.getArticlesbyKeywords("BBC")
File "api_access.py", line 15, in getArticlesbyKeywords
for doc in my_collection.find({"$text": {"$search": keyword}}).sort({"score": {"$meta": "textScore"}}):
File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 660, in sort
keys = helpers._index_list(key_or_list, direction)
File "C:\Python27\lib\site-packages\pymongo\helpers.py", line 63, in _index_list
raise TypeError("if no direction is specified, "
TypeError: if no direction is specified, key_or_list must be an instance of list
запись образец в моей Монго DB выглядит следующим образом:
Keywords: "[{'count': 20, 'key': 'north'}, {'count': 13, 'key': 'image'}, {'count': 13, 'key': 'korean'}, {'count': 10, 'key': 'malaysian'}, {'count': 9, 'key': 'kim'}]"
Привет, спасибо за ваш ответ. Могу ли я его сортировать по более высоким баллам, когда я получу свой результат? – Mehdi
Да, сортировать по "$ meta": "textScore". Я обновил свой ответ. –
Привет, я получаю исключение, когда я использую ваш код, я отредактировал мой вопрос выше. – Mehdi