Full-Text arama ile search İşlemleri

Full-Text Search ile Arama İşlemleri

Full Text Search servisi ile SQL Server"da karakter bazlı alanlarda arama yapılarak daha verimli arama sonuçları elde edilebilir, ancak arama yapılacak olan alanlar üzerinde ilk olarak Full-Text Index"ler tanımlanmalıdır. Full Text Index"ler belirtilen alanın verisini fiziksel olarak belirtilen alana indeksleyerek bu alan içerisinde arama yapılmasını kolaylaştırır. Full Text Index tanımlamak için indeksin tanımlanacak olduğu tablo üzerine sağ tıklayarak Full Text Index seçeneği üzerinden Define Full Text Index seçeneği seçilmelidir. Full-Text Index tanımlarken bu Full-Text Indexler"in gruplanacağı yeni bir Full-Text Catalog tanımlanacağı gibi var olan  bir kataloga da eklenmesi sağlanabilir. Full-Text Index tanımlanırken dikkat edilmesi gereken bir nokta da indeksin tanımlanacak olduğu tabloda en azından bir tane UniqueKey tanımlanmış olması gerekliliğidir. Tabi bu ayarı yapabilmek için DataBase"de Full Text Indexing özelliğinin aktif olarak ayarlanmış olması gerekmektedir. Eğer üzerinde arama yapılmak istenilen DataBase"in Full-Text Indexing özelliği aktif değilse DataBase"in özelliklerinden Files bölümünde bulunan CheckBox seçili hale getirilerek aktif yapılabilir. Full-Text Index"ler char, varchar, text, ntext, nchar ve nvarchar veri tipinde tanımlanmış olan alanlar üzerinde tanımlanabilir ve Full Text Search servisi bu alanlarla kullanılabilir. Arama yapılacak olan sütun ya da sütunlar üzerinde Full-Text Search servisi kullanılarak arama yapmak için kullanılabilecek bir kaç farklı SQL sözcüğü vardır bu yazımda bunlardan CONTAINS ve FREETEXT sözcükleri üzerinde örnekleme yapıyor olacağım.

CONTAINS Contains sözcüğü ile hedef alan içerisinde arama yapılacak olan sözcüklerin içinde geçtiği kayıtlar ve bu sözcüğe yakın olan kayıtlar listeleniyor olacaktır. Bu alanda örnek vermek gerekirse drive sözcüğünü ele aldığımızda sorgu sonucunda drive, drove, drives, driving ve diriven gibi sözcükleri içeren kayıtlarda sorgu sonucunda yer alıyor olacaktır. Contains sözcüğünün kullanımını aşağıda yer almaktadır.

SELECT Description FROM Production.ProductDescription WHERE CONTAINS ( *, " "For true" " )

Contains sözcüğü kullanılırken ilk olarak * işareti ile tablo üzerinde tanımlı olan tüm Full-Text Index"lerde arama yapılacağı belirtiliyor, bu alanda istenilirse indeks tanımlı olan sütunlardan istenilenlerde verilebilirdi. Diğer alanda ise aranacak sözcük belirtilerek belirtilen kayıt ve belirtilen kayda yakın kayıtlar getiriliyor. Contains sözcüğü ile birlikte WHERE ile kullanmaya alışık olduğumuz OR ve AND sözcükleri de kullanılabilir. Aşağıdaki sorgu çalıştırıldığında içerisinde "Aluminum alloy cups" ya da "For true" sözcükleri veya bunlarla benzer söz dizimine sahip olan sözcükleri içeren kayıtlar listeleniyor olacaktır.

SELECT Description FROM Production.ProductDescription WHERE CONTAINS ( *, ""Aluminum alloy cups" OR "For true" " )

FREETEXT Freetext sözcüğü ile hedef alan içerisinde belirtilen ifade ve kelimeler çözümlenerek onlara benzer kayıtlar listeleniyor. Bu alanda örnek vermek gerekirse "Microsoft Türkiye Ofisi"ndeki seminer oldukça güzeldi ve faydalı bilgiler içeriyordu." cümlesini ele alalım. Bu alanda arama yapılırken tanımlanacak olan kelimeler Microsoft, Türkiye, Ofis, Seminer, Güzel, Faydalı, Bilgi şeklinde olacaktır. Tanımlanan ifadeler ise Microsoft Türkiye Ofisi, Faydalı bilgi şeklinde olacaktır. Freetext sözcüğü de aşağıdaki gibi kullanılabilir.

SELECT Description FROM Production.ProductDescription WHERE FREETEXT( description,""For true trail addicts."")

Kodlara dikkat edilirse bu kodlarda sadece description sütunu üzerinde tanımlı olan index üzerinde arama yapılacaktır.

Döküman Arama

Başlık :

Kapat