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.
Şunun için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'teki SQL veritabanı
Verilen bir kelime kırıcı, sözlük sözlüğü ve durdurma listesi kombinasyonunu sorgu dizisi girdisine uyguladıktan sonra nihai tokenizasyon sonucunu döndürür. Tokenizasyon sonucu, belirtilen sorgu dizisi için Full-Text Engine'in çıktısına eşdeğerdir.
sys.dm_fts_parser dinamik bir yönetim fonksiyonudur.
Syntax
sys.dm_fts_parser (
'query_string'
, lcid
, stoplist_id
, accent_sensitivity
)
Argümanlar
query_string
Çözümlemek istediğiniz soru. query_string, sözdizimi desteği içeren bir dizi zinciri olabilir. Örneğin, çekim biçimleri, bir sözlük sözlüğü ve mantıksal operatörler ekleyebilirsiniz.
lcid
query_string ayrıştırmak için kullanılacak kelime kesicinin yerel tanımlayıcısı (LCID).
stoplist_id
Eğer varsa, lcid ile tanımlanan kelime kırıcı tarafından kullanılacak durak listesinin kimliği.
stoplist_idiçsel. 'NULL' belirtirseniz, durak listesi kullanılmaz. 0 belirtirseniz, sistem STOPLIST kullanılır.
Stoplist ID, bir veritabanı içinde benzersizdir. Belirli bir tabloda tam metin bir indeks için stoplist ID'sini almak için sys.fulltext_indexes katalog görünümünü kullanın.
accent_sensitivity
Tam metin aramasının diyakritik değerlere karşı hassas mı yoksa duyarsız mı olduğunu kontrol eden boolean değeri. accent_sensitivitybittir ve aşağıdaki değerlerden birine sahiptir:
| Değer | Aksan hassasiyeti... |
|---|---|
| 0 | Duyarsız "Café" ve "café" gibi kelimeler aynı şekilde ele alınır. |
| 1 | Duyarlı "Café" ve "café" gibi kelimeler farklı şekilde ele alınır. |
Note
Tam metin katalogda bu değerin mevcut ayarını görmek için aşağıdaki Transact-SQL ifadesini çalıştırın: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.
Tablo geri getirildi
| Sütun adı | Veri türü | Description |
|---|---|---|
keyword
1 |
varbinary(128) | Verilen bir anahtar kelimenin onaltılık temsili, kelime kesici tarafından geri getirilir. Bu temsil, anahtar kelimeyi tam metin indeksinde depolamak için kullanılır. Bu değer insan tarafından okunabilir değildir, ancak belirli bir anahtar kelimeyi, sys.dm_fts_index_keywords ve sys.dm_fts_index_keywords_by_document gibi tam metin indeks içeriğini döndüren diğer dinamik yönetim görünümlerinin verdiği çıktıyla ilişkilendirmek için faydalıdır. |
group_id |
int | Belirli bir terimin oluşturulduğu mantıksal grubu ayırt etmek için faydalı olan bir tamsayı değeri içerin. Örneğin, Server AND DB OR FORMSOF(THESAURUS, DB) İngilizce'de aşağıdaki group_id değerleri üretir:1: Sunucu2: DB3: DB |
phrase_id |
int | Kelime kırıcı tarafından alternatif bileşik kelimeler biçimlerinin, örneğin tam metin gibi durumlarda çıkarıldığı durumları ayırt etmek için faydalı olan bir tam sayı değeri içerir. Bazen, bileşik kelimeler ('multi-million') bulunduğunda, kelime kırıcı tarafından alternatif biçimler çıkarılır. Bu alternatif biçimler (ifadeler) bazen ayırt edilmelidir. Örneğin, multi-million İngilizce'de aşağıdaki phrase_id değerleri üretir:1 için multi1 için million2 için multimillion |
occurrence |
int | Ayrıştırma sonucundaki her terimin sırasını gösterir. Örneğin, SQL Server query processor ifadede ifade için oluşum, İngilizce'de ifadedeki terimler için aşağıdaki rastlaşma değerlerini içerir:1 için SQL2 for Server3 için query4 için processor |
special_term |
nvarchar(4000) | Kelime kırıcı tarafından verilen terimin özellikleri hakkında bilgi içerir, bunlardan biri: - Tam eşleşme - Gürültü kelimesi - Cümlenin sonu - Paragrafın sonu - Bölümün sonu |
display_term |
nvarchar(4000) | Anahtar kelimenin insan tarafından okunabilir biçimini içerir. Tam metin indeksinin içeriğine erişmek için tasarlanmış fonksiyonlarda olduğu gibi, bu gösterilen terim denormalizasyon sınırlaması nedeniyle orijinal terimle aynı olmayabilir. Ancak, orijinal girdiden tanımanıza yardımcı olacak kadar hassas olmalıdır. |
expansion_type |
int | Belirli bir terimin genişleme doğası hakkında bilgi içerir, bunlardan biri: 0 = Tek kelime harve 2 = Çekimsel genişleme 4 = Thearurus genişletilmesi/yerine geçmesi Örneğin, tezaurus'un run'ı 'run'ın bir genişlemesi jogolarak tanımladığı bir durumu ele alalım:<expansion><sub>run</sub><sub>jog</sub></expansion>Bu terim FORMSOF (FREETEXT, run) aşağıdaki çıktıyı üretir:run expansion_type = 0 ileruns ile expansion_type = 2running ile expansion_type = 2ran ile expansion_type = 2jog = expansion_type 4 ile |
source_term |
nvarchar(4000) | Belirli bir terimin oluşturulduğu veya analiz edildiği terim veya ifade. Örneğin, bir '"word breakers" AND stemmers' sorgu İngilizcede aşağıdaki source_term değerleri üretir:word breakers
display_termwordword breakers
display_termbreakersstemmers
display_termstemmers |
10xFF , bir dosyanın veya veri setinin sonunu gösteren özel karakteri temsil eder.
Açıklamalar
sys.dm_fts_parser
CONTAINS ve FREETEXT gibi tam metin önlemlerinin sözdizimi ve özelliklerini, CONTAINSTABLE ve FREETEXTTABLE gibi fonksiyonları destekler.
Özel karakterleri ayrıştırmak için Unicode kullanın
Bir sorgu dizesini ayrıştırdığınızda, sys.dm_fts_parser bağlı olduğunuz veritabanının derlemesini kullanır, sorgu dizesini Unicode olarak belirtmezseniz. Bu nedenle, ü veya ç gibi özel karakterler içeren Unicode dışı bir dizede çıktı veritabanının derlemesine bağlı olarak beklenmedik olabilir. Veritabanı derlemesinden bağımsız olarak bir sorgu dizesini işlemek için, diziye N, N'<query_string>'yani .
Daha fazla bilgi için bkz. C. Bu makalenin ilerleyen bölümlerinde özel karakterler içeren bir dizinin çıktısını gösterin .
Ne zaman kullanılmalı sys.dm_fts_parser
sys.dm_fts_parser hata ayıklama amaçlı güçlü olabilir. Bazı önemli kullanım senaryoları şunlardır:
Bir kelime kırıcısının belirli bir girdiyi nasıl ele aldığını anlamak
Bir sorgu beklenmedik sonuçlar verdiğinde, muhtemel bir neden kelime bozucusunun veriyi ayrıştırıp bozma şeklidir. Kullanarak
sys.dm_fts_parser, kelime bozucusunun tam metin indeksine ilettiği sonucu bulursunuz. Ayrıca, tam metin indeksinde aranmayan terimlerin duraforması olduğunu görebilirsiniz. Bir terimin belirli bir dil için durak kelimesi olup olmadığı, fonksiyonda ilan edilen stoplist_id değeriyle belirtilen durak listesinde olup olmamasına bağlıdır.Aksan hassasiyeti bayrağı, kelime kesicinin aksan hassasiyet bilgisini göz önünde bulundurarak girdiyi nasıl ayrıştırdığını görmenizi sağlar.
Stemmer'ın belirli bir girdide nasıl çalıştığını anlamak için
Kelime kırıcı ve stimmer'in bir sorgu terimini ve kök biçimlerini nasıl ayrıştırdığını aşağıdaki
CONTAINScümleyi içeren bir veyaCONTAINSTABLEsorguFORMSOFbelirterek öğrenebilirsiniz:FORMSOF ( INFLECTIONAL, <query_term> )Sonuçlar, tam metin indeksine hangi terimlerin aktarıldığını gösterir.
Tezaurusun girişin tamamını veya kısmen nasıl genişletildiğini veya değiştirildiğini anlamak
Ayrıca belirtebilirsiniz:
FORMSOF ( THESAURUS, <query_term> )Bu sorgu sonuçları, kelime kırıcı ve sözlük sözlüğünün sorgu terimi için nasıl etkileştiğini gösterir. Sözlük sözlüğünden genişletme veya değişiklikleri görebilir ve tam metin indeksine karşı aslında gönderilen sorguyu belirleyebilirsiniz.
Kullanıcı şu sorunlar çıkarıyorsa:
FORMSOF ( FREETEXT, <query_term> )Çekim ve Thesaurus yetenekleri otomatik olarak gerçekleşir.
Önceki kullanım senaryolarına ek olarak, sys.dm_fts_parser tam metin sorgulama ile ilgili birçok diğer sorunu anlamaya ve sorun gidermeye önemli ölçüde yardımcı olabilir.
Permissions
Belirtilen durak listesine izin ve erişim hakkı gerektirir CREATE FULLTEXT CATALOG .
Examples
A. Bir anahtar kelime veya ifade için verilen kelime kırıcısının çıktısını gösterin
Aşağıdaki örnek, İngilizce kelime kesicisinin LCID 1033 olduğu ve aşağıdaki sorgu dizesinde durak listesi olmayan İngilizce kelime kesicisinin kullanımından elde edilen çıktıyı geri getirir:
The Microsoft business analysis
Aksan hassasiyeti devre dışı bırakılmıştır.
SELECT *
FROM sys.dm_fts_parser(' "The Microsoft business analysis" ', 1033, 0, 0);
B. Verilen bir kelime kırıcısının çıktısını durdurma listesi filtreleme bağlamında gösterin
Aşağıdaki örnek, aşağıdaki sorgu dizisinde İngilizce kelime kesici (LCID 1033 olan ve ID'si 77 olan İngilizce durak listesi) kullanımından elde edilen çıktıyı geri getirir:
"The Microsoft business analysis" OR "MS revenue"
Aksan hassasiyeti devre dışı bırakılmıştır.
SELECT *
FROM sys.dm_fts_parser(' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. Özel karakterler içeren bir dizinin çıktısını göster
Aşağıdaki örnek, aşağıdaki Fransızca diziyi ayrıştırmak için Unicode kullanır:
français
Örnek, Fransızca dili 1036için LCID ve kullanıcı tanımlı bir durak listesinin kimliğini belirtir, 5. Aksan hassasiyeti etkinleştirildi.
SELECT *
FROM sys.dm_fts_parser(N'français', 1036, 5, 1);
İlgili içerik
- Tam metin ve anlamsal arama dinamik yönetim görünümleri ve fonksiyonları
- Full-Text arama
- Securables
- Sözcük ayırıcıları ve kök bulucuları yapılandırma ve yönetme
- Full-Text Arama için Thesaurus Dosyalarını Yapılandır ve Yönet
- Tam Metin Arama için durak sözcükleri ve durak sözcük listelerini yapılandırın ve yönetin
- Sorgu, Full-Text Arama ile