BİLGİ SAYAMIYORUM beta

Sql de prosedür kullanarak nasıl arama sorgusu yapılır?

0

Herhangi bir proje, internet sitesi geliştirirken eğer arama kısmı yapacak olursak, bunu için google custom search kullanabilirsiniz. Ancak veritabanı içerisinde çalışacak kendi arama motorunuzu yapmak istiyorsanız, bunu ancak gerçekten temiz çalışan bir stored procedure (prosedür) yardımıyla yapabilirsiniz.

Arama sorgusu yapmak en çok uğraşılması gereken konulardan biridir, zira arama süresinin uzun olması, yanlış sonuç getirilmesi, gereksiz sonuç getirilmesi en çok dikkat edilmesi gereken başlıklardandır. Site tarafındaki kod için genellikle pek fazla uğraşılmasına gerek yoktur, zaten alınacak değer ve verilecek listeyi göstermek kısımları dışında kalan bölümler asıl etkinliği belirleyen şeyler olacaktır. Detaylı bir liste yapmak gerekirse, sql dahilinde arama ile ilgili temel olarak şunları düşünebilirsiniz:

  1. Alınacak veri (örn: kelime) parçalara bölünecek mi, olduğu gibi mi arama sorgusuna girecek?
  2. Arama işleminde kullanılacak kolon, kolonlar, tablo, tablolar iyice belirlenmeli. Bir çok tablodaki kolonlarda mı arama yapılacak, yoksa tek bir tablonun tek bir kolonunda mı? Buna göre baştan kesin kararlar verilmeli.
  3. Arama işlemi bir çok kolonda ise sıraları ya da iç içelikleri belirlenmeli.
  4. Alınan veri her kolonun sonunda mı, her yerinde mi aranacak bu belirlenmeli.
  5. Çıkarılan sonuç listesindeki öğeler gruplanırken tutarlılık sağlanıp, alakasız öğeler birleştirilmemeli.

 

Bunlar tabii ki söylediğim gibi başlangıçta aklınızda olması gereken şeyler, durumlara göre belli bir noktadan sonra arama sorgusu öyle bir hale gelebilir ki kendiniz bile takip edemeyebilirsiniz. (: 

Örnek olarak basit bir prosedür. (stored procedure) 

CREATE PROCEDURE [dbo].[baslikAra]
        @arananDeger nvarchar(150)
   AS
   BEGIN
       DECLARE @sonuclar 
          TABLE
          (
             ID int,
             baslik nvarchar(200)
           )
 
        INSERT 
           @sonuclar 
 
        SELECT 
           POS.ID,
           POS.baslik
        FROM
            posts AS POS
        WHERE
            POS.baslik LIKE '%'+ @arananDeger + '%' 
 
      SELECT * FROM @sonuclar GROUP BY ID,baslik
   END
Yapılan işlemler:

 

Yapılan bu basit arama sorgusu tüm arama ihtiyaçlarınızı kesinlikle karşılamayacaktır. Burada daha sonra genişletilecek basit bir form oluşturdum, 2 kolon ile işlemleri gerçekleştirerek biraz iyimser bir basitlik işlemleri nasıl ilerlediğini göstermeye çalıştım. Çoğu kod gösterimlerinde olduğu gibi bunda da, benzer işlemler için tek ve değiştirilemez yöntem olmadığını belirtmek isterim.

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER