Piyasayı tek bir ilan sitesinden okumak, odanın yarısına bakıp mobilyayı yerleştirmeye benziyor. Üç ayrı portalda üç ayrı sekme açıp kafanızda birleştirmeye çalıştığınız şey aslında bir veri işi: farklı alan isimlerini ortak bir şemaya oturtmak, aynı ilanın iki sitede tekrar ettiğini fark etmek ve sonunda tek bir karşılaştırma tablosu üretmek. Bu sayfa o üç adımın nasıl kurulduğunu, nerede tıkandığını ve hangi kararların insana bırakılması gerektiğini anlatıyor.
Tek portaldan veri almak çözülmüş bir iştir; asıl zorluk ikinci portal devreye girdiğinde başlar. Aynı daire bir sitede 3+1, diğerinde 4 oda olarak yazılmıştır. Bir sitede brüt 135 metrekare, diğerinde net 118 metrekare görünür. Fiyat birinde güncellenmiş, diğerinde iki hafta önceki haliyle durmaktadır. Üstelik ikisi de aynı danışmanın ilanıdır ve fotoğraflar birebir aynıdır. Elinizde iki satır vardır ama gerçekte tek bir daire vardır. Bunu fark etmezseniz üç şey aynı anda bozulur: bölgedeki arz sayısını olduğundan yüksek sayarsınız, ortalama metrekare fiyatınız aynı taşınmazı iki kez saydığı için kayar, müşteriye sunduğunuz listede aynı ev iki kez görünür ve ciddiyet kaybedersiniz. Çapraz portal birleştirmenin amacı arama yapmak değil, bu üç hatayı ortadan kaldırmaktır. Sonuç ürünü de basittir: tek satırda tek taşınmaz, yanında hangi sitede hangi fiyatla durduğunu gösteren sütunlar.
Birleştirmenin ilk adımı, tüm kaynaklarda karşılığı bulunan bir çekirdek alan kümesi tanımlamaktır. Emlak tarafında bu küme genelde şudur: kaynak adı, kaynak ilan numarası, ilan başlığı, ilan tipi (satılık/kiralık), taşınmaz tipi, il, ilçe, mahalle, brüt alan, net alan, oda düzeni, bina yaşı, kat, fiyat, para birimi, ilan tarihi, son görülme tarihi, ilan durumu, fotoğraf sayısı, ilan sahibi tipi. Araç tarafında alanlar değişir ama mantık aynıdır: marka, seri, model, yıl, kilometre, yakıt, vites, kasa, renk, hasar durumu. Buradaki kritik karar, çekirdek dışında kalan alanları atmamaktır. Her sitenin kendine has alanları vardır; biri krediye uygunluk gösterir, biri takas durumu ekler, biri site içi puanlama yapar. Bunları çekirdek şemaya sokmaya çalışırsanız tablo şişer ve her yeni kaynakta yeniden tasarlamanız gerekir. Doğru yaklaşım, çekirdeği sabit tutup kaynağa özel alanları tek bir 'ek alanlar' bloğunda ham haliyle saklamaktır. Çekirdek karşılaştırma yapar, ek alanlar detay gerektiğinde açılır.
Aynı bilgi her sitede başka biçimde yazılır ve karşılaştırma yapılmadan önce hepsi tek biçime indirilmelidir. Fiyat alanında binlik ayıracı bir sitede nokta, diğerinde boşluktur; para birimi bazen sayının içinde bazen ayrı alandadır; döviz cinsinden ilanlar ayrı işaretlenmelidir. Alan bilgisinde brüt ve net karışır: 'm2' etiketi bir sitede brütü, diğerinde neti gösterebilir. Bunu tahmin etmeye çalışmak yerine kaynak bazında hangi alanın hangi anlama geldiğini bir kez sabitleyip öyle yazmak gerekir. Oda düzeninde 3+1, 3.5+1 ve '4 oda' gibi yazımlar tek bir kanonik biçime çevrilir. Araçta kilometre '125.000 km', '125000' ve '125 bin' biçimlerinde gelir. En sinsi alan ise tarihtir: birçok listede ilan tarihi 'bugün', 'dün', '3 gün önce' gibi göreli yazılır. Bu metni olduğu gibi kaydederseniz iki ay sonra o kayda baktığınızda hangi güne denk geldiğini bilemezsiniz. Göreli tarih, veri alındığı anda mutlak tarihe çevrilmeli ve kaydın yanına 'alınma zamanı' da yazılmalıdır.
Birleştirilmiş tabloda her satırın bir kimliği olmalıdır ve bu kimlik ilan numarası değildir. Her portal kendi numarasını kendi içinde benzersiz üretir; iki farklı sitede aynı numaraya sahip iki ayrı ilan bulunması tamamen mümkündür. Doğru doğal anahtar 'kaynak adı + kaynak ilan numarası' ikilisidir. Bunun üzerine bir de kendi iç kimliğinizi koyarsınız; asıl kıymetli olan budur, çünkü iki portaldaki kayıt aynı taşınmaza ait olduğunda ikisi de aynı iç kimliğe bağlanır. Yapı şöyle işler: en altta kaynak kayıtları durur, her biri kendi portalındaki halini korur; üstte birleşik kayıt vardır ve altındaki kaynak kayıtlarını gösterir. Bu iki katmanlı yapı olmadan geri dönüş imkânsız hale gelir. Yanlış birleştirdiğiniz iki ilanı ayırmak isterseniz, kaynak kayıtları duruyorsa tek hamlede ayırırsınız; ham kayıtları silip tek satıra indirdiyseniz veriyi baştan toplamanız gerekir. Aynı yapı, bir ilan yayından kalktığında da işe yarar: kayıt silinmez, durumu pasife çekilir ve son görülme tarihi yazılır.
Tekrar tespiti, çapraz portal birleştirmenin en kritik ve en yanlış anlaşılan kısmıdır. Tek bir alana bakarak karar verilmez. Kullanılabilir sinyaller güçten zayıfa şöyle sıralanır: aynı iletişim numarası veya aynı danışman/ofis bilgisi en güçlü sinyaldir. İkincisi fotoğraf benzerliğidir; aynı ilan çoğu zaman aynı fotoğraf setiyle iki siteye girilir. Üçüncüsü konum derinliğidir; iki kayıt aynı mahallede ve aynı sokakta ise sinyal güçlenir. Dördüncüsü sayısal bant benzerliğidir: metrekare ve oda düzeni ya da araçta yıl ve kilometre birbirine çok yakınsa. Beşincisi ilan tarihlerinin yakınlığıdır. Bu sinyaller tek tek zayıftır ama birleştiklerinde karar verilebilir hale gelir. Önemli olan, hiçbir sinyale tek başına karar yetkisi vermemektir. Sadece fiyat eşleşmesine bakan bir kural, aynı sitede aynı fiyata çıkmış iki farklı daireyi birleştirir. Sadece başlık benzerliğine bakan bir kural, 'Kadıköy'de 3+1 Satılık Daire' başlıklı yüzlerce ilanı tek kayda indirir. Sinyallerin nasıl puanlandığı ve hangi bantta hangi kararın verildiği, eşleştirme konulu ayrı bir yazıda adım adım ele alınıyor.
Birleştirme kararının üç değil, dört sonucu olmalıdır: kesin aynı, kesin farklı, şüpheli ve karar verilemedi. Çoğu kurulum ilk ikisiyle yetinir ve tam da bu yüzden ya çok agresif birleştirir ya da hiç birleştirmez. Doğru davranış, ara bölgeye düşen kayıtları otomatik birleştirmemek, ayrı bir kuyruğa almak ve kullanıcıya iki kaydı yan yana göstererek karar verdirmektir. Bu ekranın nasıl kurulduğu sonucu belirler: iki kaydın fotoğrafları yan yana, farklı olan alanlar renkli işaretli, ortak alanlar sade gösterilir. Kullanıcı üç saniyede bakıp 'aynı' veya 'farklı' der. Verilen karar kaydedilir ve bir sonraki taramada aynı çift tekrar sorulmaz; kural kendi kendine öğrenmez ama verdiğiniz kararlar birikir. Pratikte şüpheli kuyruğun boyutu ilk taramada en büyüktür, sonraki taramalarda hızla küçülür çünkü çoğu ilan zaten kararı verilmiş kayıtlardır. Kuyruk büyüklüğü kontrolden çıkıyorsa bu, eşiklerin değil normalizasyonun eksik olduğunun işaretidir; önce alan çevrimlerini gözden geçirmek gerekir.
Birleşik kayıt oluştuğunda son soru şudur: aynı alan iki kaynakta farklıysa hangisi tabloya yazılacak. 'Son gelen kazanır' kuralı burada kötü sonuç verir, çünkü bir sitedeki ilan iki hafta güncellenmemişken diğerindeki dünkü olabilir ve tarama sırası bunu yansıtmaz. Alan bazında öncelik yazmak gerekir. Fiyatta, ilanın en son güncellendiği kaynak öne alınır ve diğer kaynaktaki fiyat silinmez, ayrı sütunda durur; iki sitedeki fiyat farkı zaten görmek istediğiniz bilgidir. Alan bilgisinde brüt/net etiketi açıkça belirtilmiş kaynak tercih edilir. Konumda en derin kırılımı veren kaynak kazanır; mahalle bilgisi olan, sadece ilçe verene üstün gelir. Açıklama metninde daha uzun olan, fotoğrafta daha çok görsel içeren kaynak seçilir. Boş değer hiçbir zaman dolu değeri ezmez; bu tek kural birleştirme hatalarının büyük kısmını engeller. Sonuçta ortaya çıkan tabloda her satır bir taşınmazdır ve satırın sonunda 'hangi sitelerde var', 'fiyat farkı', 'ilk yayın tarihi', 'son görülme' sütunları bulunur. Karar bu dört sütunda verilir.
Doğru sıra şudur: önce tek kaynakla çalışın ve çekirdek şemayı oturtun; ikinci kaynağı eklemeden önce normalizasyon kurallarını yazın; ikinci kaynak geldiğinde eşleştirmeyi dar bir bölgede, örneğin tek bir mahallede test edin; sonuç tatmin ediciyse kapsamı genişletin. Üç kaynağı birden açıp geniş bir bölgeyi taramakla başlamak, çıkan hatanın hangi kaynaktan geldiğini anlamayı imkânsızlaştırır. Sınırlar konusunda da açık olmak gerekir. Her platformun kendi kullanım şartları vardır ve bunlar birbirinden farklıdır; hangi verinin ne şekilde alınabileceği, hangi sıklıkla erişilebileceği o şartlarla belirlenir. Bir platformun izin verdiği bir kullanım biçiminin diğerinde de geçerli olduğu varsayılamaz; her kaynak için ayrı ayrı bakılır. Kişisel veri içeren alanlar, özellikle bireysel ilan sahiplerinin iletişim bilgileri, KVKK kapsamındadır ve amaçla sınırlı işlenir. Birleştirilmiş tablonun amacı piyasa görünürlüğü sağlamaktır; kişisel veri biriktirmek değil. Son olarak sitelerin sayfa yapısı zamanla değişir, bu da bakım tarafında planlanması gereken normal bir kalemdir.
Tek bir tablo çıkarır: her satırda bir taşınmaz veya araç, yanında hangi sitelerde yayında olduğu, sitelerdeki fiyatları, aradaki fark, ilk yayın tarihi ve son görülme tarihi. Amaç ilan listelemek değil, aynı varlığın farklı portallardaki hallerini tek satırda görünür kılmaktır.
Bir kısmında evet, bir kısmında hayır. İletişim bilgisi, konum, sayısal bant ve fotoğraf sinyalleri birlikte güçlü olduğunda karar güvenlidir. Sinyaller çeliştiğinde otomatik birleştirme yapılmaz; kayıt şüpheli eşleşme olarak işaretlenip iki kayıt yan yana gösterilir ve kararı kullanıcı verir.
Toplama işi basitleşir ama karar verme işi imkânsızlaşır. Üç ayrı tabloda ortalama fiyat hesaplamak, tekrar eden ilanları elemek ve bir ilanın hangi sitede daha ucuz durduğunu görmek elle yapılabilecek bir iş değildir. Zaten birleştirmenin varlık sebebi, toplama değil karşılaştırmadır.
Tahminle değil, kaynak bazında sabitleyerek. Her portal için 'bu sitenin m2 alanı brütü mü neti mi gösteriyor' sorusu bir kez cevaplanır ve şemaya yazılır. İki alan da veriliyorsa ikisi de ayrı sütunda saklanır. Karşılaştırma yaparken hangi alanın kullanıldığı raporun üstünde açıkça belirtilmelidir.
Hayır, silmemek gerekir. Kayıt pasif duruma çekilir, son görülme tarihi yazılır ve tabloda kalır. Bir ilanın ne kadar sürede yayından kalktığı, birleştirilmiş tablonun en değerli çıktılarından biridir; sildiğinizde bu bilgiyi kaybedersiniz.
İkiyle. Tek kaynakla eşleştirme mantığını test edemezsiniz, üç veya dört kaynakla başlarsanız hatanın kaynağını ayırt edemezsiniz. İki kaynakta dar bir bölgede doğru sonuç aldıktan sonra üçüncüyü eklemek hem hızlı hem güvenlidir.
Kaynak kayıtları ayrı katmanda duruyorsa evet: birleşik kaydı çözersiniz, altındaki iki kayıt kendi haline döner ve hiçbir bilgi kaybolmaz. Bu katman yoksa elinizde yalnızca birleştirilmiş satır kalır; hangi alanın hangi portaldan geldiğini artık ayırt edemezsiniz. İki katmanlı yapı bu yüzden tercih değil, zorunluluktur.
Şema kaynaktan bağımsız kurulduğu için yeni bir portal eklemek çekirdek yapıyı değiştirmez; sadece o kaynağın alan eşlemesi ve normalizasyon kuralları yazılır. Bir kaynak devre dışı kalsa bile tablonun geri kalanı çalışmaya devam eder.
Her platformun kendi kullanım şartları geçerlidir ve bunlar birbirinden farklı olabilir; her kaynak için ayrı değerlendirilir. Kişisel veri içeren alanlar KVKK kapsamında, belirli ve meşru bir amaçla sınırlı işlenir. Erişim kısıtlarını aşmaya yönelik yöntemler bu çerçevenin dışındadır.
Küçük ölçekte kısmen yapabilirsiniz: iki listeyi alt alta koyup ilan numarasına göre bakabilirsiniz. Ama farklı portalların numaraları çakıştığı, alan biçimleri uyuşmadığı ve eşleştirme tek alana bakarak yapılamadığı için formül düzeyi hızla yetersiz kalır. Excel çıktı almak için iyi, birleştirme mantığını yürütmek için uygun değildir.