Sintomi
In un word breaker della lingua inglese, si utilizza un contenuto di indice di indice full-text che contiene le parole con iniziale decimali, ad esempio.325,.434,.646. Quando si tenta di individuare le righe dell'indice eseguendo una ricerca sul valore decimale (ad esempio,.325), nessuna riga vengono restituiti.
Soluzione alternativa
Per risolvere questo problema, utilizzare uno dei seguenti metodi:
-
Utilizzare il sillabatore neutro.
-
Inserire uno zero prima della virgola decimale quando si utilizzano delle parole in lingua inglese. Ad esempio, utilizzare "0.325" invece di ". 325" per la ricerca. Le parole inglesi gestisce correttamente l'indicizzazione e la ricerca quando rileva gli zeri iniziali.
Ulteriori informazioni
Procedura per riprodurre il problema
-
Creare un indice full-text per creare un indice che contiene le parole con iniziale decimali, ad esempio.325,.434,.646 e così via.
-
Utilizzare la seguente query full-text per la ricerca su questi valori utilizzando delle parole inglesi cui LCID è 1033:
Select * from sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 1033, 0,0)
Risultatiparola chiave
group_id
phrase_id
occorrenza
special_term
display_term
Note
0x007700610073006800650072
1
0
1
Corrispondenza esatta
Anello
0x002E003300310033
1
0
2
Corrispondenza esatta
.325
Mantiene il separatore decimale
0x006E006E00300064003300310033
1
0
2
Corrispondenza esatta
nn0d325
0x0078
1
0
3
Parola non significativa
x
0x006E006E003400330038
1
0
4
Corrispondenza esatta
.434
Mantiene il separatore decimale
0x006E006E003400330038
1
0
4
Corrispondenza esatta
nn434
0x003000340036
1
0
5
Corrispondenza esatta
.646
Mantiene il separatore decimale
0x006E006E00340036
1
0
5
Corrispondenza esatta
nn46
0x007300680069006D
1
0
6
Corrispondenza esatta
Platinum
-
Provare a eseguire la ricerca ". 325" (compresa la virgola decimale):
Select * from sys.dm_fts_parser('.325', 1033, 0,0) Using English word breaker to specify the ".325" search term.
Nota: Non si ottiene una corrispondenza.
Risultatiparola chiave
group_id
phrase_id
special_term
display_term
Note
0x003300310033
1
0
1
Corrispondenza esatta
325
Consente di rimuovere il separatore decimale durante la ricerca e 325 <>.325, nessuna riga restituita
0x006E006E003300310033
1
0
1
Corrispondenza esatta
nn325
In questo esempio, se si immette ". 325" come valore di ricerca, viene restituita alcuna riga. In questo modo abbiamo i dati mantenendo il punto decimale, ma non in lingua inglese di word breaker rimuove la virgola decimale durante il processo di ricerca. Pertanto, si ricercano inavvertitamente 325 anziché.325, e non vengono trovate corrispondenze.
La ricerca di un indice full-text utilizzando delle parole in lingua inglese per le parole con iniziale decimali funziona correttamente se si utilizza il sillabatore neutro. -
Mediante il sillabatore neutro, eseguire la query seguente:
Select * from sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 0, 0,0)
Risultatiparola chiave
group_id
phrase_id
occorrenza
special_term
display_term
Note
0x007700610073006800650072
1
0
1
Corrispondenza esatta
Anello
0x002E003300310033
1
0
2
Corrispondenza esatta
.325
Mantiene il separatore decimale
0x006E006E00300064003300310033
1
0
2
Corrispondenza esatta
nn0d325
0x0078
1
0
3
Parola non significativa
x
0x002E003400330038
1
0
4
Corrispondenza esatta
.434
Mantiene il separatore decimale
0x006E006E00300064003400330038
1
0
4
Corrispondenza esatta
nn0d434
0x002E003000340036
1
0
5
Corrispondenza esatta
.646
Mantiene il separatore decimale
0x006E006E00300064003000340036
1
0
5
Corrispondenza esatta
nn0d646
0x007300680069006D
1
0
6
Corrispondenza esatta
Platinum
A questo punto, la ricerca di ". 325" funziona come previsto.Select * from sys.dm_fts_parser('.325', 0, 0,0) Specifying Neutral word breaker.
Risultati
parola chiave
group_id
phrase_id
occorrenza
special_term
display_term
Note
0x002E003300310033
1
0
1
Corrispondenza esatta
.325
0x006E006E00300064003300310033
1
0
1
Corrispondenza esatta
nn0d325
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".