Sql İle İlgili Bi Soru
-
Arkadaşlar çoğomuz sql ile arama yapmayı biliyoruz. karakterle başlayan içinde karakter olan ve sonu karakter ile biten bu karakter değilde string bi ifade de olabilir.
Şimdi benim sorum mesela "bugün hava güneşli" diye bir cümlemiz olsun ben veritabanında bu cümleyi kelime kelime aratıp içinde herbir kelimenin olduğu verileri geri döndürmek istiyorum yani %bugün% , %hava%,%güneşli% şeklinde
Bu konuda bana yardımcı olursanız sevinirim
-
eğer sql server kullanmıyosan e mantıklı çözüm şu olacak
string Sorgu = "SELECT * FROM Deneme_Tbl ";
string[] ArananCumleler = "bugün hava güneşli".Split(' ');
if(ArananCumleler.Lengh>0)
{
Sorgu +=" WHERE ";
for (int i = 0;i<ArananCumleler.Lengh; i++)
{if(i>0)
Sorgu +=" AND "; // kelimelerden herhangi biri diyosan burayı OR yapSorgu += "DenemeColumn LIKE '"+ ArananCumleler[i] +"' ";
}
"SELECT * FROM Denem_Tbl WHERE DenemeColumn LIKE 'bugün AND DenemeColumn LIKE 'hava' AND DenemeColumn LIKE 'güneşli''"
// Sorguyu database gönder}
Eğer SQL server kullanıyosan FullTextSearch servisini şiddetle tavsiye ederim gerçi hakkında çok fazla türkçe bilgi yok ama ingilizcen varsa ayrıntılı olarak incele derim
ben 3 proje de kullandım şuanda acayip kayıt var DB de bi kelime arıyosun şak getiriyo mantık şu sql server aramalar için ayrıca bi servis barındırıyo bu servisin metodlarıyla arama yaparsan daha önce özel indexlediği veriler üzerinden çok hızlı sonuç dönüyo dediğin tarz kelime bazlı aramalar yapıyosun hatta şunu bile yapıyo mesela sen "bi araba alıp gezecem" diye arama yapıyosun o şopar arkada türkçe benzer kelimelerden sana analiz yapıp sonuç döndürüyo mesela "bi" ~ "bir" veya "gezecem" ~ "gezeceğim" bu aynı eng. ki gibi begin-began-begun meselesi ama bu özellik için sql serverda bu servis için türkçe paketi aktif hale getirmen lazım MSDN de FTS langualge pack turkish diye arat çıkar hatta linki http://msdn.microsoft.com/en-us/library/ms176076.aspx
yaw neler var neler gevur yapıyo incelemek lazım.. -
Teşekkür ederim cevap verdiğin için.Şimdi bu kod tarafından yapılıyor.Sql tarafında Procedure ile yapılma imkanı varmı?
FullTexSearch konusu geçenlerde lazım oldu.Yine bu konuyu araştırırken Contains ve FreeText özelliklerini kullanmak istediğimde fulltextsearch disable felan dyordu onu araştırıken öğrendim nası enable edilir ne işe yarar.
Aslında FreeText ve Contains de kısmen bu şi yapıyor ama içnde geçen değil cümleyi kelimelere göre ayırıp onları getiriyor.Neyse Sql tarafında nasıl halledebileceğim konusunda bilgi verebilirsen sevinirin olmasa kod tarafına kaldık :)