NoSQL için Azure Cosmos DB'de tam metin arama (önizleme)
NoSQL için Azure Cosmos DB artık uygulamalarınızın arama özelliklerini geliştirmek için tasarlanmış, önizleme aşamasında güçlü bir Tam Metin Arama özelliği sunuyor.
Not
Tam Metin ve Karma Arama erken önizleme aşamasındadır ve şu anda tüm bölgelerde kullanılamayabilir.
Tam metin araması nedir?
NoSQL için Azure Cosmos DB artık veri sorgulama özelliklerinizi geliştirmek için tasarlanmış, önizleme aşamasında güçlü bir Tam Metin Arama özelliği sunuyor. Bu özellik, sözcük kaldırmayı durdurma ve belirteç oluşturma gibi gelişmiş metin işleme tekniklerini içerir ve özel bir metin dizini aracılığıyla verimli ve etkili metin aramalarına olanak tanır. Tam metin araması, belgelerin belirli bir arama sorgusuyla olan ilgi düzeyini değerlendiren bir işlevle tam metin puanlaması da içerir. BM25 veya En İyi Eşleşen 25, belgeleri puanlayıp sıralamak için terim sıklığı, ters belge sıklığı ve belge uzunluğu gibi faktörleri dikkate alır. Bu, en uygun belgelerin arama sonuçlarının en üstünde görünmesini sağlayarak metin aramalarının doğruluğunu ve kullanışlılığını artırmaya yardımcı olur.
Tam Metin Arama, aşağıdakileri içeren çeşitli senaryolar için idealdir:
- E-ticaret: Açıklamaları, incelemeleri ve diğer metin özniteliklerini temel alan ürünleri hızla bulun.
- İçerik yönetimi: Makaleleri, blogları ve belgeleri verimli bir şekilde arayın.
- Müşteri desteği: İlgili destek biletlerini, SSS'leri ve bilgi bankası makalelerini alın.
- Kullanıcı içeriği: Gönderiler ve açıklamalar gibi kullanıcı tarafından oluşturulan içeriği analiz edin ve arayın.
- Sohbet botları için RAG: Büyük metin kuruluşlarından ilgili bilgileri alarak sohbet botu yanıtlarını geliştirin, yanıtların doğruluğunu ve ilgi düzeyini artırın.
- Çok Aracılı Yapay Zeka uygulamaları: Kapsamlı ve ayrıntılı içgörüler sağlayarak çok büyük miktarlardaki metin verilerini işbirliğiyle aramak ve analiz etmek için birden çok yapay zeka aracısını etkinleştirin.
Tam metin aramasını kullanma
Not
Tam Metin ve Karma Arama (önizleme) şu anda tüm bölgelerde kullanılamayabilir.
- "NoSQL için Tam Metin ve Karma Arama" önizleme özelliğini etkinleştirin.
- Kapsayıcıyı tam metin ilkesi ve tam metin dizini ile yapılandırın.
- Metin özellikleriyle verilerinizi ekleyin.
- Verilere karşı karma sorgular çalıştırın.
NoSQL önizleme özelliği için tam metin ve karma aramayı etkinleştirme
Tam metin araması, tam metin puanlaması ve karma arama için, kullanmadan önce NoSQL için Azure Cosmos DB hesabınızda önizleme özelliğini etkinleştirmeniz gerekir. Kaydolmak için aşağıdaki adımları izleyin:
- NoSQL için Azure Cosmos DB kaynak sayfanıza gidin.
- "Ayarlar" menü öğesinin altındaki "Özellikler" bölmesini seçin.
- "NoSQL API'si için Tam Metin ve Karma Arama (önizleme)" özelliğini seçin.
- Etkinleştirmek istediğinizi onaylamak için özelliğin açıklamasını okuyun.
- Vektör dizin oluşturma ve arama özelliğini açmak için "Etkinleştir" seçeneğini belirleyin.
Karma arama için kapsayıcı ilkelerini ve dizinlerini yapılandırma
Tam metin arama özelliklerini kullanmak için önce iki ilke tanımlamanız gerekir:
- Yeni tam metin sorgu sistemi işlevleri için hangi yolların metin içereceğini tanımlayan kapsayıcı düzeyinde bir tam metin ilkesi.
- Verimli arama sağlayan dizin oluşturma ilkesine bir tam metin dizini eklendi.
Tam metin ilkesi
Tam metin araması için yapılandırmak istediğiniz her metin özelliği için hem özelliğin hem de path
metnin metnini language
bildirmeniz gerekir. Basit bir tam metin ilkesi şöyle olabilir:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Diziye başka bir öğe fullTextPolicy
ekleyerek birden çok metin yolunu tanımlama işlemi kolayca yapılır:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Not
Şu anda desteklenen tek dil İngilizcedir ("dil olarak en-us").
Önemli
Joker karakterler (*, []) şu anda tam metin ilkesinde veya tam metin dizininde desteklenmiyor.
Tam metin dizini
Tüm tam metin arama işlemleri, tam metin dizininden yararlanmalıdır. Tam metin dizini, aşağıdaki örneğe göre herhangi bir NoSQL için Azure Cosmos DB dizin ilkesinde kolayca tanımlanabilir.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Tam metin ilkelerinde olduğu gibi, tam metin dizinleri de birden çok yolda tanımlanabilir.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Tam metin arama sorguları
Tam metin arama ve puanlama işlemleri, NoSQL için Azure Cosmos DB sorgu dilinde aşağıdaki sistem işlevleri kullanılarak gerçekleştirilir:
FullTextContains
: Belirli bir dize belgenin belirtilen özelliğinde yer alırsa döndürürtrue
. Bu, sorgunuz tarafından döndürülen belgelere belirli anahtar sözcüklerin eklendiğinden emin olmak istediğinizde birWHERE
yan tümcede yararlıdır.FullTextContainsAll
: Verilen dizelerin tümü belgenin belirtilen özelliğinde yer alırsa döndürürtrue
. Bu, sorgunuz tarafından döndürülen belgelere birden çok anahtar sözcüğün eklendiğinden emin olmak istediğinizde birWHERE
yan tümcede yararlıdır.FullTextContainsAny
: Verilen dizelerden herhangi biri belgenin belirtilen özelliğinde yer alırsa döndürürtrue
. Bu, anahtar sözcüklerden en az birinin sorgunuz tarafından döndürülen belgelere eklendiğinden emin olmak istediğinizde birWHERE
yan tümcede yararlıdır.FullTextScore
: Bir puan döndürür. Bu yalnızca, döndürülen belgelerin tam metin puanının sırasına göre sıralandığı, en ilgili (en yüksek puanlama) belgelerin en üstte ve en az ilgili (en düşük puanlama) belgelerin en altında olduğu birORDER BY RANK
yan tümcede kullanılabilir.
Kullanımdaki her işleve birkaç örnek aşağıda verilmiştir.
FullTextContains
Bu örnekte, özelliğinde c.text
"bisiklet" anahtar sözcüğünü içeren ilk 10 sonucu elde etmek istiyoruz.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
Bu örnekte, özelliğinde c.text
"kırmızı" ve "bisiklet" anahtar sözcüklerinin bulunduğu ilk 10 sonuç elde etmek istiyoruz.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
Bu örnekte, özelliğinde c.text
"kırmızı" ve "bisiklet" veya "kaykay" anahtar sözcüklerinin bulunduğu ilk 10 sonucu elde etmek istiyoruz.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
Bu örnekte, "dağ" ve "bisiklet"in dahil edildiği ve ilgi sırasına göre sıralandığı ilk 10 sonucu elde etmek istiyoruz. Başka bir ifadeyle, bu terimleri daha sık içeren belgelerin listede daha yüksek görünmesi gerekir.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Önemli
FullTextScore yalnızca yan tümcesinde ORDER BY RANK
kullanılabilir ve deyiminde SELECT
veya yan WHERE
tümcesinde yansıtılamaz.