GEODI, varsayılan olarak bir veritabanındaki seçili veya tüm tabloları bazı varsayılan davranışlarla indeksler. DBMeta’lar, bu davranışı değiştirmek için isteğe bağlı tanımlamalardır.
Gömülü veya bağlantılı dosyaları indekslemek, SQL’I indekslenecek satırları değiştirmek için bir DBMeta tanımlamanız gerekir.
DBMeta dosyaları *.jsettings uzantılıdır ve “Settings\Reader\DBMeta" klasöründe olmalıdır.

Ayarların Etkisini Sınırlama

Ayarların etki alanını sınırlayabilirsiniz. Bu şekilde birden çok meta tanımın yapabilirsiniz. Her biri ayrı tablo/veritabanı için etkili olacaktır.

Key

Açıklama

WorkspaceName

Ayarların geçerli olacağı WorkSpace(ler).

TableFilter

Ayarların geçerli olacağı Tablolar.

ColumnFilter

Verilen kolonları içeren tablolar. (- verilirse ilgili kolonları içermeyen tablolar dikkate alınır). Birden çok verilirse ilişki VE dir.

Columns

İndekslenecek veya dışarıda kalacak kolonlar

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBView, Geodi.Database",
         "WorkspaceName":"0000-Promotional and Educational Videos",
         "TableFilter":"*",
         "ColumnFilter":"*",
         "Columns":"-FILEPATH,-SILINECEK,-Hazırlayan,-TARIH,-GEODIFILELINK"      
      }
   ]
}

Satırların adını belirleme

Her kayıt bir belgedir. GEODI için dosyalar neyse satırlar da o şekilde ele alınır. Varsayılanda ilk text kolon satırın adı olur. Satırın adı, doc:(…) sorgusunun kullandığı içeriktir.

DisplayNameMacro kullanarak her bir tablo için ayrı ayrı değiştirebilirsiniz. Makroda diğer kolonları da kullanabilirsiniz. Makro kuralları sayfa sonunda verilmiştir.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowDisplayName, Geodi.Database",
         "DisplayNameMacro":"[TEXT4]/[TEXT2]-[TEXT3]"
      }
   ]
}

Tablolara Gömülü dosyaları Indexleme

 Geodi, Veritabanında dosya yolları bulunan ya da blob olarak veritabanına gömülmüş dosyaları tarayabilir. Bu dokümanda gerekli ayarların nasıl yapılacağı anlatılmıştır. 

Key

Açıklama

FileMemoColumn

Dosya içeriğinin yer aldığı BLOB/MEMO alan.

DisplayNameColumnMacro

Tanımlanmışsa dosyanın aramalarda görüneceği ad, aynı zamanda uzantısı da tipini belirler. Tanımlı değilse FileNameColumnMacro kullanılır.

IDColumnMacro

Tablonun birincil anahtarının olduğu kolon . UNCPath benzersizliğini sağlamak için gerekli.

FileNameColumnMacro

Tanımlanmışsa dosyanın aramalarda ve görüntüleyicilerde görünecek adı . Uzantı buradan alınır.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBSubContent, Geodi.Database",
         "TableFilter":"TEST",
         "IDColumnMacro":"[OBJECTID]",
         "FileNameColumnMacro":"[FILE1]",
         "FileMemoColumn":"file2",
         "DisplayNameColumnMacro":"[Internalid][Extension]""
      }
   ]
}

Dosya Yolu ile İndexleme

Bir kayıtta yer alan dosya linkleri ile belirtilen dosyaları da indexleyebilirsiniz. (*.csv dosyaları için desteklenmez.)

Key

Açıklama

FileFullPathColumnMacro

Burada yazacağıız makro ile dosya yolları hesaplanır. Bu dosyalar ilgili satırın child içeriği olurlar. Dosya adlarında uzantı olmayabilir, bu durumda uzantı için diğer özellikler kullanılır.

FileFullPathColumnSplitter

Eğer dosya yolunda birden çok dosya varsa ayraç karakterini verebilirsiniz.

DisplayNameColumnMacro

Tanımlanmışsa dosyanın aramalarda görüneceği ad, aynı zamanda uzantısı da tipini belirler. Tanımlı değilse FileNameColumnMacro kullanılır. Klasörlere verilen linklerde kullanılmaz.

FileNameColumnMacro

Tanımlanmışsa dosyanın aramalarda ve görüntüleyicilerde görünecek adı . Uzantı buradan alınır. Klasörlere verilen linklerde kullanılmaz.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBSubContent, Geodi.Database",
         "FileFullPathColumnMacro":"[PATH]",
         "FileFullPathColumnSplitter":"|"
      },
      {
         "__type":"Geodi.Database.Meta.DBSubContent, Geodi.Database",
         "FileFullPathColumnMacro":"//server/files/[PATH][FILE].[EXTENTION]",
         "FileFullPathColumnSplitter":","
      },
      {
         "__type":"Geodi.Database.Meta.DBSubContent, Geodi.Database",
         "FileFullPathColumnMacro":"//server/files/[ID].tif",
         "FileFullPathColumnSplitter":","
      }
   ]
}

Birincil Anahtar Kolonu Belirleme

Değişenleri tara ve versiyonlama için her bir tablo için primary kolon gereklidir. GEODI ObjectID değerini varsayılan olarak belirler. Burada anlatılan tanım ile farklı bir kolonu belirleyebilirsiniz.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBPKey, Geodi.Database",
         "WorkspaceName":"BLOBDataset Deneme",
         "KeyColumns":"BelgeBelgeID"
      }
   ]
}
      {
         "__type":"Geodi.Database.Meta.DBPKey, Geodi.Database",
         "TableFilter":"tablo1",
         "KeyColumns":"id"
      },

Bir SQL ifadesinin sonucunu indexleme

SQL anahtarı ile ismi NewName olan yeni bir tablo oluşturursunuz. SQL deyimi ilgili VTYS ile uyumlu olmalıdır.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBSQL, Geodi.Database",
         "TableFilter":"ADA,IRTIFAK_HAKKI",
         "ColumnFilter":"ADA.ADA_NO,ADA.OBJECTID,IRTIFAK_HAKKI.OBJECTID,IRTIFAK_HAKKI.TABAKA",
         "NewName":"ADALAR2",
         "SQL":"SELECT * FROM ADA,EASEMENT_RIGHT WHERE IRTIFAK_HAKKI.OBJECTID=ADA.OBJECTID",
         "KeyColumns":"ADA.OBJECTID"
      }
   ]
}
{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBSQL, Geodi.Database",
         "TableFilter":"TEST,TEST1",
         "ColumnFilter":"TEST.TARIH,TEST.OBJECTID,TEST1.OBJECTID,TEST.TAMS1",
         "NewName":"DENEME12",
         "SQL":"SELECT TEST.* FROM TEST,TEST1 WHERE TEST.OBJECTID=TEST1.TAMS2",
         "KeyColumns":"OBJECTID"
      }
   ]
}

Satır Bazlı Yetkilendirme

(warning) Oluşturulan grup ismi büyük/küçük harf ayrımı yapar.

Örnek 1 : SQL Sorgu Sonucu Yetkilendirme

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowDisplayName, Geodi.Database",
         "TableFilter":"",
         "DisplayNameMacro":"[TEXT4]/[TEXT2]-[TAMS1]"
      },
      {
         "__type":"Geodi.Database.Meta.DBSQL, Geodi.Database",
         "TableFilter":"TEST,TEST2",
         "ColumnFilter":"TEST.TARIH,TEST.OBJECTID,TEST2.OBJECTID,TEST.TAMS1",
         "NewName":"DENEME12",
         "SQL":"SELECT TEST.* FROM TEST,TEST2 WHERE TEST.OBJECTID=TEST2.TAMS2",
         "KeyColumns":"OBJECTID"
      },
      {
         "__type":"Geodi.Database.Meta.DBRowPermission, Geodi.Database",
         "TableFilter":"DENEME12",
         "PermitMacro":"DECE\\kullanıcıadı",
         "DenyMacro":"[geodi:kullanıcıadı]"
      }
   ]
}

Örnek 2 : Oluşturulan Grup Bazlı Yetkilendirme

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"birimler",
         "PermitMacro":"[birimler]",
         "DenyMacro":""
      }
   ]
}

Örnek 3 : Gelişmiş Makro Örnekleri

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"birimler",
         "PermitMacro":'=d.Get<string>("birimler").Split(\',\')',
         "DenyMacro":""
      }
   ]
}

Örnek 4 :

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"birimler",
         "PermitMacro":'=new string[] {d.Get<string>("YETKILI_GRUP"),"S-1-5-21-128668610-1027347169-903626496-1222","geodi:guest"}',
         "DenyMacro":""
      }
   ]
}

Örnek 5 :

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"birimler",
	 "PermitMacro":'=new string[] {string.Concat("Grubum_",d["KOLON1"]),string.Concat("Grubum_",d["KOLON2"])}'
         "DenyMacro":""
      }
   ]
}

Örnek 6 :

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"BIRIMLER,BIRIMLER_TEST",
         "PermitMacro":'=new string[] {d.Get("BIRIMLER"),d.Get("BIRIMLER_TEST")}',
         "DenyMacro":""
      },
   ]
}
________________________________________________________________________________________
{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBRowPermission,Geodi.Database",
         "TableFilter":"test",
         "ColumnFilter":"BIRIMLER,BIRIMLER_TEST",
         "PermitMacro":'=new string[] {d["BIRIMLER"],d["BIRIMLER_TEST"]}',
         "DenyMacro":""
      }
   ]
}

Bir Kaydın Metin/Text Sonucunu Belirleme

Bu özellik GEODI arama indexini değiştirmekte kullanılır context içinde verilen isimlendirme GEODI üzerinden arandığı zaman tablodaki tüm içerikleri bulur. Content ile bir kaydın kolonun arama kelimesini seçebiliriz kolon ismi olmayan kelimeleri bu özellik ile arama kelimesi haline getirebiliriz. Content içine birden fazla [Kolondadı] yazıp isimlendirebilirsiniz. DBmetadaki Ignore durumunda yapılan ayarın kapatıp açılmasını sağlar.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DBContent, Geodi.Database",
         "WorkspaceName":"otf_meta_testV1",
         "TableFilter":"TEST",
         "ColumnFilter":"TARIH",
         "Ignore":"False",
         "Content":"[TAMS2] ZAMAN [TEXT3]"
      }
   ]
}

Kayıtların Görünüm Şeklini Ayarlamak

“TemplateName” anahtarı ile vereceğiniz html şablon kriterlere uyan kayıtların görünümü belirleyecektir. Bu “.html” uzantılı şablon “DBMeta” dosyası altındaki Templates klasörünün altında olmalıdır ve oluşturulan meta “DBMeta” klasörü altında kaydedilmelidir.

(warning) TemplateName kullanımı size görsel olarak esneklik sağlar ama performans kaybı yaşatabilir.

{
   "Defines":[
      {
         "__type":"Geodi.Database.Meta.DB_DLV_View, Geodi.Database",
         "TemplateName":"PortalAnkaraGeziveMesire.html"
      }
   ]
}

FieldIndex Ayarları (Aramaları Kolon Adı ile sınırlamak)

Varsayılan arama tüm tablolar ve tüm kolonları kapsar. Arama sonucunu kolon bazlı sınırlamak için FieldIndex ayarını yapmalısınız. Ayar sonrası “kolonadı:<arama cümleniz>” ile kriterler ilgili kolon ile sınırlandırılacaktır.

(warning) Bu özellik aktif olduğunda. Veritabanındaki keşif sonuçlarında kolon adı yazacaktır.

Veritabanlarında Örneklemeli Veri Keşifi Yapmak

GEODI varsayılan ayarlarda veritabanı içeriklerinin tümünü keşfeder. İsteğe bağlı olarak veritabanı içeriklerinizden örnekleme keşif yapabilirsiniz bu sayede tarama süresinde ve depolama alanından kazanç sağlayabilirsiniz. GEODI her tablodan rastgele N örnek satır seçer.

Örnekleme ayarını Folder kaynakları için kullanırsanız dosya bazlı DB’ler de (excel,*.mdb,*.accdb gibi) etkili olur.


Kolon adlarını çok dilli yapmak ve alias(eş anlamlı) tanımlamak

İsterseniz aşağıdaki tanımları yapmalısınız.

  1. resx dosya isimleri içinde “fields” mutlaka geçmelidir. Bu dosyalar globalization dizininde yer almalıdır.

  2. kullanılan name değeri att{fieldname} şeklinde olmalıdır ve tabloda olan ile uyuşmalıdır. Farklı dillerde aynı anahtarı kullanmalısınız.

  3. value değeri alternatif kolon adlarını içerir(alias). Birden çok alternatifi“|” ile ayırabilirsiniz.

  4. Kullandığınız aliaslardan herhangi biri başka bir kolon adı ile aynı olursa dikkate alınmaz.

  5. Çok dilli gösterimlerde ilk alias dikkate alınır.

myfields.resx

  <data name="att_{fieldname}" xml:space="preserve">
    <value>{alias1}|{alias2}|{alias3}</value>
  </data>
  
  <data name="att_EnvanterNo" xml:space="preserve">
    <value>Envanter Numarası|Envanter N.|Envanter Sırası</value>
  </data>
  <data name="att_ADI" xml:space="preserve">
    <value>Ad|Adı Soyadı|AdSoyad</value>
  </data>

myfields.en-us.resx

  <data name="att_{fieldname}" xml:space="preserve">
    <value>{alias1}|{alias2}|{alias3}</value>
  </data>
  
  
  <data name="att_EnvanterNo" xml:space="preserve">
    <value>Inventory Number|Inventory N|Inventory Position</value>
  </data> 
  <data name="att_PersonName" xml:space="preserve">
    <value>Name|Pname|Person Name</value>
  </data> 


Makrolar

Doküman ID, Dosya yolu gibi değerler için makro yazabilirsiniz. Makrolar kolon değerlerin doğrudan yetersiz kaldığı durumları çözmenizi sağlar. Hangi değerler için makro kullanılabileceği ilgili bölümlerde belirtilmiştir.

Makro metni kolonların “[]” arasında verildiği bir metindir. Örnekte görüldüğü gibi aynı kolonu birden çok kez verebilirsiniz.

Makrolarda bazı karakter escape karakteri (“\”) ile birlikte kullanılmalıdır. Örneğin “\” , “\\” şeklinde verilmelidir.

"FileFullPathColumnMacro":"C:\TEST\KUR-1166 VT\files\[FILE1]"

"DisplayNameMacro":“[ADANO] Ada [PARSELNO] Parsel”

"DisplayNameMacro":“[TITLE]-[POSITION]”

(warning) Tipi makro olan ayarların değeri = ile başlarsa c# makro kullanımına geçiliyor. Bu sınırsız esneklik getiriyor.

Örnekler

"FileFullPathColumnMacro":'=Path.Combine(@"C:\\TEST\\KUR-1166 VT\\files\\",d["FILE1"])'

"DisplayNameMacro":'=string.Concat(d["ADANO"]," Ada ",d["PARSELNO"]," Parsel")'

"DisplayNameMacro":'=string.Concat(d["TITLE"],"-",d["POSITION"])'

"DisplayNameMacro":'=d.Get<int>("DEGER")>-1?"Pozitif":"Negatif"'

Detay Bilgiler

  • Jsettings dosyalarının syntax doğrulaması yapılmalıdır bu doğrulama için https://jsonformatter.curiousconcept.com/ sitesini kullanabilirsiniz.

  • Tablo/Kolon/Proje veritabanı üzerindeki kolon,tablo ve GEODI proje ismini isimlerinin doğruluğunu kontrol etmeliyiz.

  • Tarama hata loglarına bakıp incelenmelidir.GEODI üzerinden geliştirici raporu ile taramada alınan hataları inceleyebilirsiniz.