Ich writitng einen Artikel, dessen Inhalt und Keywords zu einer MongoDB Datenbank Python..now den Benutzer verwendet, kann mir ein Stichwort Ich brauche Artikel zu finden, die Keywords mit ..Pymongo und Artikel im DB
Ich bin wie unten wrting bis DB:
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)
Schlüsselwörter ist eine Liste von bnary Tupel
[("africa",3),("content",5),...]
ich wollte Hacke wissen, über usecases..I zu implementieren neeed alle Datensätze in DB travese Artikel ha finden Ving ein bestimmtes Stichwort
Schreiben Sie unter sehr für dies?
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))
ich unten Fehlermeldung erhalten:
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
Ein Beispieldatensatz in meinem Mongo DB wie folgt lautet:
Keywords: "[{'count': 20, 'key': 'north'}, {'count': 13, 'key': 'image'}, {'count': 13, 'key': 'korean'}, {'count': 10, 'key': 'malaysian'}, {'count': 9, 'key': 'kim'}]"
Hallo danke für deine Antwort, kann ich es durch höhere Punktzahlen sortieren lassen, wenn ich mein Ergebnis bekomme? – Mehdi
Ja, nach "$ meta" sortieren: "textScore". Ich habe meine Antwort aktualisiert. –
Hallo ich bekomme eine Ausnahme, wenn ich Ihren Code verwende, habe ich meine Frage oben bearbeitet. – Mehdi