Open bobbypriam opened 8 years ago
@bobbypriambodo hmmm ini tantangan nya sih, satu berita punya lebih dari satu url yang berbeda.
Kalau mau melakukan preprocessing untuk input ke database (lewat rojak-pantau
) atau lookup data (lewat rojak-api
) ada beberapa catatan:
http
/https
. kadang ada media yg gak bisa diakses lewat https
misal: https://kompas.com, jadi untuk amannya mungkin http
aja karena semua media pasti bisanews.detik.com
& m.detik.com
host
beda path
. Misal:
Solusi yang paling naive mungkin, waktu mau lookup ke database kita lakukan ini:
url
(misal untuk detikcom: d-3330331/bnn-minta-ahok-berani-tutup-tempat-hiburan-yang-terbukti-jual-narkoba
)Jadi ada tambahan column baru di table news
: unique_identifier
dan table media
ada tambahan column: host
.
Waktu lookup data dari api, kita tinggal ekstrak host
sama unique
identifiernya lalu query ke DB bisa semacam ini where media_host=host and unique_identifier=u
. Untuk unique identifier nanti tiap media beda-beda sih.
Menurut kalian gimana?
cc: @girikuncoro @imrenagi @rawgni @kevinluvian @rilut
@bobbypriambodo normally, link artikel yang dimaksud di dapat dari mana (dari site rojak atau dari site lain)?
Kalau dari site rojak, harusnya sih ga ada problem dengan non-matching artikel karena url
nya di dapat dari rojak-database
.
Kalo dari site lain, artikel
nya harus exists di rojak-database
atau nga ?
Kalau nga harus, apakah bisa langsung lewat rojak-analyzer
saja ?
Thoughts?
@pyk Konsepnya cukup reasonable sih dengan ekstrak host dan unique identifier. Tapi concern saya adalah perbedaan struktur url tiap-tiap media, khususnya misalnya untuk kasus yang nomor 3 (beda host beda path), kalau itu beda juga antara satu media dengan media yang lain, timbul masalah di implementasinya.
Edit: CMIIW, saya nangkepnya berarti preprocessing dilakukan baik oleh rojak-pantau
ketika scraping dan rojak-api
ketika lookup.
rojak-pantau
mungkin bisa implementasi semacam interface function normalize_url(url)
per-spider, tapi di API berarti kita harus meng-cater semua jenis media beserta struktur masing-masing (semacam if-else/case expressions yang besar) ketika normalizing URL yang diterima dari user input (dari search box pada rojak-ui
). Bener ga ya? Atau ada cara untuk ngehandle itu?
@rawgni Use casenya yang disampaikan oleh @CodeRiderz di Slack adalah:
Menurut saya dengan adanya API kita ga akan ngebolehin interaksi langsung dari UI ke rojak-database
atau rojak-analyzer
sih...
@bobbypriambodo oh ok. got it :)
Use case: given sebuah link artikel berita, kita ingin lihat bagaimana sentimen artikel tersebut pada rojak.
Sebagai MVP, kita ingin pencarian dilakukan secara exact match dan tidak ada fuzzy search. Tantangannya adalah satu berita bisa memiliki beberapa URL berbeda, terutama apabila terdapat query string yang tidak relevan dengan beritanya. Contohnya pada detik.com:
Terdapat query
_ga
yang tidak berhubungan. Solusinya adalah kita strip query string dari URLnya ketika melakukan pencarian.