Miner - achugr/goods-review-ng GitHub Wiki

Майнер-модуль проекта(агрегация данных)

Немного чернового описания работы майнера

Поясню, что было сделано. Я немного поменял логику майнера. Теперь есть три способа майнить категории, модели и

  1. Можно майнить на основе информации, уже находящейся в базе. Например: смайнить все модели для категорий уже лежащих в базе (в классе ModelGrabber метод grabModelsForCategoriesFromDB()) или смайнить отзывы на все модели лежащие в базе (в классе ReviewGrabber метод grabReviewsForModelsFromDB() ). Этот вариант сделан для того, чтобы сократить время работы майнера.

  2. Можно майнить все категории, модели и отзывы без привязки к уже лежащей в базе информации (в классе CategoryGrabber метод grabAllCategories, в классе ModelGrabber метод grabAllModels, в классе ReviewGrabber метод grabAllReviews). В этом случае, например, когда запускается майн всех отзывов (grabAllReviews), то сначала майнятся и записываются в базу все категории, потом все модели для всех категорий, а потом все отзывы на все модели. Это понятное дело занимает очень много времени и может быть использовано для первичного заполнения пустой базы.

  3. Можно майнить модели и отзывы на модели относящиеся к конкретным, выбранным заранее категориям (опять же без привязки к уже лежащей в базе информации). (в классе CategoryGrabber метод grabCategories(categories_names), в классе ModelGrabber метод grabModels(categories_names), в классе ReviewGrabber метод grabReviews(categories_names)). Например, можно смайнить все модели для категории "Компьютеры". Т.к. "Компьютеры" - составная категория, то вначале смайнятся все её подкатегории ("Настольные", "Ноутбуки",...), а потом все модели для всех этих подкатегорий. Таким образом базу можно заполнять по-отдельности моделями и отзывами для различных категорий. Это собственно и есть фильтр.

Касательно отзывов для конкреных категорий ("мобилки", "стиральные машины",...), то их можно загрузить либо сразу с помощью метода grabReviews("мобилки", "стиральные машины",...). В этом случае в базу сначала загрузятся все подкатегории (если они есть) этих категорий, потом все модели мобил, стиральных машин, ... , а потом все отзывы на все эти модели. Этот способ можно использовать, когда база пуста или в ней лежат модели и (или) отзывы для других подкатегорий. Либо, если в базе уже лежат только модели мобил, стиральных машин, ... , то можно просто запустить grabReviewsForModelsFromDB(). В этом случае майнится будут только отзывы и такой способ будет работать быстрее.