ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как правильно перебрать записи для устранения дублей?

Может кто поможет, у меня что то в голову ничего дельного не лезет =(
Есть пол миллиона документов вида
{
 _id: ObjectId(),
 tags: [слово, слово 2, слово 3]
 href: 'ссылка на документ'
}

Title страницы формируется за счет tags, банально tags.join(', '), страницы дубли вылетают из индекса, и возможно пагубно влияют на сайт в целом.
Поэтому куча однотипных страниц, порядка 70 000 тысяч, на них только фото немного разные и всё. Пытался править в ручную, т.е. добавлять, изменять теги, это ужасно, до пенсии точно буду этим страдать =(
Хочу добиться следующего:
1. Определить родителя дублей
2. Получить ссылку на родителя (href)
3. Найти другие дубликаты и создать доп. поле canonical в которое поместить ссылку на родителя

Сейчас делаю отлов дублей следующим образом
Получаю к примеру 500 записей из базы
function getDocuments(request) {
    return Wallpapers.aggregate([
        { $sort: request.sorting },
        { $match: request.query },
        { $skip: request.skip },
        { $limit: request.limit },
        {
            $project: {
                _id: 1,
                href: 1,
                tags: 1
            }
        }
    ])
}

Затем перебираю записи, нахожу дули и пушу их в массив для последующего вывода их на сайте для правки тегов вручную
function cleanUniqueDocument(request) {
    return arr = [], tags = [], Promise.all(request.map( async (e) => {
        return tags.indexOf(e.tags.join(',')) < 0 && tags.push(e.tags.join(',')) || arr.push(e)
    }))
    .then(e => {
        return arr || []
    })
}

Все Ок, на для ручной правки документов на самом сайте, вижу список дублей - правлю его!
Теперь думаю, как автоматизировать процесс чтобы не править теги, а прописать сразу canonical дубликату с URL родителя. По сути нужно вместе с тегами записывать ссылку, т.е. формировать массив объектов, а потом в этом массиве искать дубликаты по тегам, если есть совпадение то в из массива объектом взять URL родителя и изменить документ. Такая у меня каша в голове =( на счет этого всего
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы