Soru Sor Anket Yap Soru Sor, Anket YapAra BulYayınlaNedir?

Veritabanında aynı anda çoklu arama ?

Bir veritabanım var. 30-40 civarı tablo ve her tabloda da 10-15 kolon var. Bir kelimeyi tüm tablolarda ve tüm kolonlarda aynı anda aramak için bir script veya başka bir yöntem biliyor musunuz?

Etiketler : veritabanı arama

Paneli Aç/Kapat
2 cevap verilmiş
Normal
Emre Ce 96 gün önce dedi ki:

FTS : Full Text Search kullanabilirsiniz. Biraz detaylı bir yöntem, temel anlamda, MS Sql server üzerinde çalışıyorsanız katalog oluşturup içerisine istediğiniz kolonları ve tabloları atabiliyor, arama yapabiliyor (dil özelliklerini destekler) ve sıralama yapabiliyorsunuz.

İlk kullanımında zorlukları vardır.

Normal
Atakan Eser 96 gün önce dedi ki:

Emre'nin dediği gibi FTS ile bu işi yapabilirsiniz.

Kısaca: SQL Server Management Studio'yu açın (2005), DB niz altında Storage>Full Text Catalogs altına gidin, yeni bir katalog ekleyin. Eklerken sizden kolon ve tablo seçmenizi isteyecektir.

Sonrasında FTS'in izin verdiği türde sorgular yapabilirsiniz. Mesela Select * from tInsanlar where Contains(Ad,'"*huseyin*" near "*sudas*"') gibi. Bu size Ad kolonundaki huseyin ile sudasin yanyana veya aralarında kelimeler olan hallerini listeleyecektir.

Birden fazla kolondaki bir arama için CONTAINSTABLE fonksiyonunu kullanmanız gerekiyor. ContainsTable ile RANK mekanızması da oluşturabilirsiniz, huseyin ile Sudasi yanyana getiren en olası durum en yukarıda olur. (Bu sitenin detaylı aramasındaki sistem de benzer şekilde çalışıyor)

SELECT KEY_TBL.RANK, FT_TBL.tInsanID, FT_TBL.Ad, FT_TBL.Soyad
FROM tInsan AS FT_TBL INNER JOIN
CONTAINSTABLE (Ad, Soyad,
'("*huseyin*" NEAR "*sudas*") OR
("*hus*" NEAR "*sud*")'
) AS KEY_TBL
ON FT_TBL.tInsanID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC;

Son olarak, FTS biraz detaylı ama zevkli bir konu, Türkçe ile ilgili yorumlama yapabilmesi için özel bir iki ayar yapmanız gerekli, bkz. http://msdn.microsoft.com/en-us/library/ms345188(SQL.90).aspx

Bunlar da var...