Considerazioni sull'uso del motore di ricerca SQL Server Full-Text per la lingua giapponese
Questo articolo descrive le considerazioni che si applicano quando si usa il motore di ricerca SQL Server Full-Text per la lingua giapponese.
Si applica a: SQL Server
Numero KB originale: 2252955
Introduzione
Nella lingua giapponese, una frase può essere costituita da due o più parole senza spazi tra tali parole. In Microsoft SQL Server, quando si usa il motore di ricerca SQL Server Full-Text per eseguire una ricerca di prefisso per una frase giapponese, il motore di ricerca Full-Text non considera la frase come un termine prefisso. Al contrario, il motore di ricerca Full-Text considera la frase come termini di parola. Ciò è dovuto al fatto che una parola viene definita come stringa di caratteri senza spazi o punteggiatura. Inoltre, il motore di ricerca funziona solo in modalità di corrispondenza del prefisso. Il motore di ricerca non funziona in modalità di corrispondenza suffisso.
Ulteriori informazioni
Ad esempio, si crea una tabella e si inseriscono alcune frasi giapponesi eseguendo le istruzioni seguenti in SQL Server:
CREATE TABLE test(c1 int PRIMARY KEY,c2 nvarchar(255))
INSERT test VALUES(1,N'添付テスト')
INSERT test VALUES(2,N'Fw: テスト')
INSERT test VALUES(3,N'KK-Information:テスト')
INSERT test VALUES(4,N'[Q] ポリシーテスト')
INSERT test VALUES(5,N'KK-Information:タイトルフィルタテスト2')
INSERT test VALUES(6,N'テスト')
INSERT test VALUES(7,N'フィルタテスト3')
INSERT test VALUES(8,N'テストフィルタ1')
INSERT test VALUES(9,N'RE: テストメール')
INSERT test VALUES(10,N'テストメール')
INSERT test VALUES(11,N'White Listテスト')
INSERT test VALUES(12,N'フィルタリングテスト')
CREATE FULLTEXT CATALOG test AS DEFAULT;
GO
CREATE FULLTEXT INDEX ON test(c2) KEY INDEX PK__<IndexName>;
GO
Eseguire quindi le tre query seguenti:
Query 1
SELECT * FROM test WHERE CONTAINS(c2, N'テスト')
Il risultato della query 1 è il seguente:
c1c2
2Fw: テスト
3KK-Information:テスト
6テストQuery 2
SELECT * FROM test WHERE CONTAINS(c2, 'テスト*')
Il risultato della query 2 è il seguente:
c1c2
2 Fw: テスト
3 KK-Information:テスト
6 テスト
8 テストフィルタ1
9 RE: テストメール
10 テストメールQuery 3
SELECT * FROM test WHERE CONTAINS(c2, '*テスト*')
Il risultato della query 3 è il seguente:
c1c2
2 Fw: テスト
3 KK-Information:テスト
6 テスト
8 テストフィルタ1
9 RE: テストメール
10 テストメールDai risultati delle query è possibile notare che il risultato della query 2 è lo stesso del risultato della query 3 perché la query Full-Text non funziona nella modalità di corrispondenza dei suffissi. Inoltre, テスト è un token diverso da ポリシーテスト o nelle テスト corrispondenze.
Per tokenizzare le frasi, è necessario usare un word breaker per la famiglia di lingue. I breaker di lavoro usano spazi e altri segni per riconoscere le frasi. Di conseguenza, alcune frasi non possono essere riconosciute dal word breaker e non possono essere cercate usando Full-Text motore nella lingua giapponese. Per altre informazioni sui word breaker, vedere l'argomento Word Breakers and Stemmers nella sezione Riferimento.
La procedura consigliata per usare il motore di ricerca Full-Text nella lingua giapponese consiste nel testare le frasi per verificare se le frasi sono interessate dalla limitazione. Se una frase è costituita da parole senza spazi, non è possibile usare la funzionalità Full-Text per cercare la frase. È invece possibile usare la parola chiave LIKE insieme ai caratteri jolly. Tuttavia, le prestazioni dell'operazione
like
sono inferiori alle prestazioni della ricerca Full-Text. È necessario considerare l'effetto sulle prestazioni per l'applicazione.Di seguito sono riportate alcune query di esempio della
like
parola chiave per cercare frasi.Query 4
SELECT * FROM test WHERE c2 like 'テスト%'
Il risultato è simile al seguente:
c1c2
6 テスト
8 テストフィルタ1
10 テストメールQuery 5
SELECT * FROM test WHERE c2 like '%テスト%'
Il risultato è simile al seguente:
c1c2
1 添付テスト
2 Fw: テスト
3 KK-Information:テスト
4 [Q] ポリシーテスト
5 KK-Information:タイトルフィルタテスト2
6 テスト
7 テストフィスタテスス3
8 テストテススフィスタ1
9 RE: テストテススメース
10 テストテススメース
11 テスト
12 フィルタリングテスト
Nota
Se si usa il motore di ricerca Full-Text in SQL Server, è possibile trovare altre informazioni sul contenuto di un indice full-text usando la query seguente:
SELECT * FROM sys.dm_fts_index_keywords(db_id('test'), object_id('test'))
GO
Il risultato è simile al seguente:
parola chiave display_term column_id document_count
0x00660077 fw 2 1
0x0069006E0066006F0072006D006100740069006F006E informazioni 2 2
0x006B006B kk 2
0x006C00690073007430C630B930C8 listテスス 2 1
0x00770068006900740065 bianco 2 1
0x30BF30A430C830EB30D530A330EB30BF30C630B930C80032 タイススフィスタテスス2 2 1
0x30C630B930C8 テスス 2 3
0x30C630B930C830D530A330EB30BF0031 テススフィスタ1 2 1
0x30C630B930C830E130FC30EB テススメース 2 2
0x30D530A330EB30BF30C630B930C80033 フィスタテスス3 2 1
0x30D530A330EB30BF30EA30F330B030C630B930C8 フィスタスングテスス 2 1
0x30DD30EA30B730FC30C630B930C8 ポスーテスス 2 1
0x6DFB4ED830C630B930C8 添付テスス 2 1
0xFF FINE DEL FILE 2 12
(14 righe interessate)
Nel risultato dell'esempio, solo tre righe contengono la parola テスト." Il motore di ricerca Full-Text considera la parola "テスト" come un token diverso dalla parola "テストメール. Per altre informazioni sul motore di ricerca SQL Server Full-Text, visitare i seguenti siti Web Microsoft:
- Ricerca full-text
- Moduli supportati dei termini di query (ricerca full-text)
- Configurare & gestire word breaker & stemmer per la ricerca (SQL Server)
- Classificazione dei risultati delle query di ricerca (ricerca full-text)
- CONTAINS (Transact-SQL)
- sys.dm_fts_index_keywords (Transact-SQL)
- team di consulenza clienti SQL Server
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per