Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
yakınlık terimini, CONTAINS koşulunda veya CONTAINSTABLE işlevindeyakın sözcükleri veya tümcecikleri aramak için kullanabilirsiniz.
NEAR'a genel bakış
NEAR aşağıdaki özelliklere sahiptir:
İlk ve son arama terimlerini ayıran en fazla arama dışı terim sayısını belirtebilirsiniz.
Sözcükleri veya tümcecikleri istediğiniz sırada arayabilir veya belirli bir sırada sözcük ve tümcecik arayabilirsiniz.
Eşleşme oluşturmak için ilk ve son arama terimlerini ayıran arama dışı terimlerin maksimum sayısını veya maksimum uzaklığı belirtebilirsiniz.
En fazla terim sayısını belirtirseniz, eşleşmelerin arama terimlerini belirtilen sırada içermesi gerektiğini de belirtebilirsiniz.
Eşleşme olarak niteleme yapmak için bir metin dizesi şunları yapmalıdır:
Belirtilen arama terimlerinden biriyle başlayın ve diğer belirtilen arama terimlerinden biriyle bitirin.
Belirtilen tüm arama terimlerini içerir.
İlk ve son arama terimleri arasında gerçekleşen, stopword'ler de dahil olmak üzere arama dışı terimlerin sayısı, maksimum uzaklık belirtildiyse, maksimum uzaklık değerinden küçük veya buna eşit olmalıdır.
NEAR sözdizimi
NEAR temel söz dizimi şöyledir:
NEAR (
{
*search_term* [ ,...*n* ]
|
(*search_term* [ ,...*n* ] ) [, <maximum_distance> [, <match_order> ] ]
}
)
Söz dizimi hakkında daha fazla bilgi için bkz. CONTAINS (Transact-SQL).
Örnekler
Örnek 1
Örneğin, 'Ahmet' için 'Smith' öğesinin iki terimi içinde aşağıdaki gibi arama yapabilirsiniz:
... CONTAINS(column_name, 'NEAR((John, Smith), 2)')
Eşleşen dizelere örnek olarak "John Jacob Smith" ve "Smith, John" verilebilir. "John Jones knows Fred Smith" dizesi, araya sızan üç arama dışı terim içerdiğinden eşleşmez.
Terimlerin belirtilen sırada bulunmasını istemek için, örnek yakınlık terimini NEAR((John, Smith),2, TRUE). olarak değiştirirsiniz. Bu, yalnızca "John" "Smith"'den önce geldiğinde, "John" ile "Smith" arasındaki iki terimlik aralığı arar. İngilizce gibi soldan sağa okunan bir dilde, eşleşen bir dize örneği "John Jacob Smith" şeklindedir.
Arapça veya İbranice gibi sağdan sola okunan bir dil için Full-Text Altyapısı'nın belirtilen terimleri ters sırada uyguladığını unutmayın. Ayrıca, SQL Server Management Studio'daki Nesne Gezgini, sağdan sola dillerde belirtilen sözcüklerin görüntüleme sırasını otomatik olarak tersine çevirir.
Örnek 2
Aşağıdaki örnek, Production.Document örnek veritabanının AdventureWorks tablosunda, "yansıtıcı" ve "köşeli ayraç" kelimelerinin aynı belgede geçtiği tüm belge özetlerini arar.
SELECT DocumentNode, Title, DocumentSummary
FROM Production.Document AS DocTable
INNER JOIN CONTAINSTABLE(Production.Document, Document,
'NEAR(bracket, reflector)' ) AS KEY_TBL
ON DocTable.DocumentNode = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 50
ORDER BY KEY_TBL.RANK DESC;
GO
Maksimum uzaklık nasıl ölçülür?
10 veya 25 gibi belirli bir maksimum uzaklık, belirli bir dizedeki ilk ve son arama terimleri arasında stopwords dahil olmak üzere arama dışı terimlerin kaç kez gerçekleşebileceğini belirler. Örneğin, NEAR((dogs, cats, "hunting mice"), 3) arama dışı terimlerin toplam sayısının üç olduğu aşağıdaki satırı döndürecektir ("enjoy", "but" ve "avoid"):
"Catshunting mice``, but avoidenjoydogs``."
Aynı yakınlık terimi, "enjoy", "but", "usually" ve "avoid" şeklindeki arama dışı dört terim izin verilen maksimum mesafeyi aştığı için aşağıdaki satırı vermez:
"Catshunting mice``, but usually avoidenjoydogs``."
NEAR'i diğer terimlerle birleştirme
NEAR'ı başka terimlerle birlikte kullanabilirsiniz. Özel yakınlık terimini başka bir özel yakınlık terimi, basit bir terim veya ön ek terimiyle birleştirmek için AND (&), VEYA (|) veya AND NOT (&!) kullanabilirsiniz. Mesela:
CONTAINS('NEAR((terim1, terim2),5) VE terim3')
CONTAINS('NEAR((terim1, terim2),5) VEYA terim3')
CONTAINS('NEAR((terim1, terim2),5) VE DEĞİL terim3')
CONTAINS('NEAR((terim1, terim2),5) AND NEAR((terim3, terim4),2)')
CONTAINS('NEAR((terim1, terim2),5) VEYA NEAR((terim3, terim4),2, DOĞRU)')
Örneğin
CONTAINS(column_name, 'NEAR((term1, term2), 5, TRUE) AND term3')
NEAR'ı bir nesil terimi (ISABOUT ...) veya ağırlıklı bir terimle (FORMSOF ...) birleştiremezsiniz.
Yakınlık aramaları hakkında daha fazla bilgi
Arama terimlerinin örtüşen örnekleri
Tüm yakınlık aramaları her zaman yalnızca çakışmayan oluşumları arar. Arama terimlerinin çakışan oluşumları hiçbir zaman eşleşme olarak nitelenmez. Örneğin, aşağıdaki yakınlık terimini düşünün; bu terim, "
A" ve "AA" ifadelerini bu sırayla, aralarında en fazla iki terim olacak şekilde arar.CONTAINS(column_name, 'NEAR((A,AA), 2, TRUE)')Olası eşleşmeler "
AAA", " "A.AA"ve "A..AA" şeklindedir. Yalnızca "AA" içeren satırlar eşleşmez.Not
Çakışan terimler belirtebilirsiniz; örneğin,
NEAR("mountain bike", "bike trails")veya(NEAR(comfort*, comfortable), 5). Çakışan terimlerin belirtilmesi, olası eşleşme permütasyonlarını artırarak sorgunun karmaşıklığını artırır. Bu tür çakışan terimlerin çok sayıda belirtirseniz, sorgu kaynakları tükenebilir ve başarısız olabilir. Bu durumda sorguyu basitleştirin ve yeniden deneyin.YAKIN (maksimum uzaklık belirtilip belirtilmediğinden bağımsız olarak), aralarındaki mutlak uzaklık yerine terimler arasındaki mantıksal uzaklığı gösterir. Örneğin, paragraf içindeki farklı tümcecikler veya tümceler içindeki terimler, gerçek yakınlıklarından bağımsız olarak, daha az ilişkili oldukları varsayımı üzerine aynı tümce veya tümcedeki terimlerden daha uzak kabul edilir. Benzer şekilde, farklı paragraflardaki terimler de birbirinden daha uzak olarak kabul edilir. Eşleşme cümlenin, paragrafın veya bölümün sonuna yayılıyorsa, belgeyi sıralamak için kullanılan boşluk sırasıyla 8, 128 veya 1024 artar.
CONTAINSTABLE işlevine göre yakınlık terimlerinin derecelendirme üzerindeki etkisi
CONTAINSTABLE işlevinde NEAR kullanıldığında, belgenin uzunluğuna göre isabet sayısı ve her isabetteki ilk ve son arama terimleri arasındaki mesafe, her belgenin derecelendirmesini etkiler. Genel bir yakınlık terimi için, eşleşen arama terimleri birbirinden >50 mantıksal terimse, belgede döndürülen derece 0'dır. Özel bir yakınlık terimi için maksimum mesafeyi bir tamsayı olarak belirtmeyen durumda, yalnızca aralarındaki boşluk 100 mantıksal terim olan (>) isabetleri içeren bir belge, 0 puan alır. Özel yakınlık aramalarının sıralaması hakkında daha fazla bilgi için bkz. RANK ile Arama Sonuçlarını Sınırlama.
, sunucu gürültü sözcüklerini dönüştürme seçeneği
Gürültü sözcüklerini dönüştür değerinin ayarı, SQL Server'ın durdurma sözcüklerini yakınlık aramalarında kullanıldıklarında nasıl işlediğini etkiler. Daha fazla bilgi için bkz. gürültü sözcüklerini dönüştürme Sunucu Yapılandırma Seçeneği.
İlgili içerik
- İÇERİR (Transact-SQL)
- CONTAINSTABLE (Transact-SQL)
- Full-Text Arama ile Sorgusu