Граф пересечения наборов ключевых слов в PyMongo - PullRequest
0 голосов
/ 27 января 2020

У меня есть список ключевых слов, например ['a':{'bob','cat'},'b':{'harry','dog'},'c':{'pog','stair'}]. У меня есть список документов в коллекции MongoDB, такой как

{ 'article one contents':['harry','window','leg'],
  'article two contents':['dog','pog','lamp'],
  'article three contents':['cat','pong','arm'],
}

Как я могу создать следующий вывод, используя только запросы MongoDB?

    {'keyword categories in article one:['b'],
     'keyword categories in article two:['b','c'],
     'keyword categories in article three:['a']}

Мой текущий подход заключается в запросе MongoDB и выполните следующие действия на клиенте:

 for author in authors:    
      publication_count=0
      for pmid in pmids:
          article_text = list(researchers.find({'pmid':pmid},
                    {'_id':0,'article_as_keywords':1}))[0]

          if len(set(keywords) & set(article_text)) > 1:
         publication_count += 1

        collection.find_one_and_update({"_id":author},
                {"$set":{pub_count_label: publication_count}})

Этот подход довольно медленный, он занимает большую часть 12 часов, чтобы перебрать 2 набора из (1 641 656 вычислений = 8 категорий ключевых слов X 35731 исследователей + 8 ключевых слов категории х 169476 исследователей). Я полагаю, было бы быстрее сделать все это на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...