MongoDB / pyMon go create_index пытается получить только точное совпадение - PullRequest
0 голосов
/ 11 марта 2020

В настоящее время работает над несколькими пауками, которые сканируют новостные статьи для URL, заголовки и т. Д. c. Это все работает нормально, и конвейер также работает, однако уникальный индекс, который я установил в моем конвейере, кажется, отбрасывает и предотвращает вход в базу данных, если одно слово совпадает с моей переменной 'title', я также пытался используйте URL-адреса в качестве переменных, но это приводит к тому, что в MongoDB практически нет записей. Например, если в двух новостных статьях есть слово «автомобиль», CLI отобразит ошибку и уронит одну, однако это должно иметь место только в том случае, если оба эти заголовка одинаковы, что будет самым простым способом реализовать это внутри конвейера? Ниже мой process_item из конвейеров scrapy.

    def process_item(self, item, spider):
        if item['title'] in self.titles_seen:
            raise DropItem("Duplicate item found: %s" % item)
        else:
            self.titles_seen.add(item['title'])
            self.db[self.collection_name].create_index([("title", pymongo.TEXT)], unique=True)
            self.db[self.collection_name].insert(dict(item))
            return item

И это пример ошибок, которые возникают в CLI при запуске сканеров.

Выход CLI из искателя

Выше, как вы можете видеть, элемент, кажется, упал из-за слова "new", появившегося в заголовке.

...