Lägga till språkanalysverktyg i strängfält i ett Azure Cognitive Search index
Ett språkanalysverktyg är en specifik typ av textanalys som utför lexikal analys med språkreglerna för målspråket. Varje sökbart strängfält har en analyzer-egenskap. Om ditt innehåll består av översatta strängar, till exempel separata fält för engelsk och kinesiska text, kan du ange språkanalysverktyg för varje fält för att få åtkomst till de omfattande språkfunktionerna i dessa analysverktyg.
När du ska använda ett språkanalysverktyg
Du bör överväga ett språkanalysverktyg när medvetenheten om ord- eller meningsstrukturen ger textparsning ett värde. Ett vanligt exempel är associationen mellan oregelbundna verbformer ("bring" och "brought) eller plural substantiv ("mice" och "mouse"). Utan språkmedvetenhet parsas dessa strängar enbart på fysiska egenskaper, vilket inte kan fånga anslutningen. Eftersom stora delar av text är mer sannolika att ha det här innehållet är fält som består av beskrivningar, recensioner eller sammanfattningar lämpliga kandidater för ett språkanalysverktyg.
Du bör också överväga språkanalysverktyg när innehållet består av icke-västliga språksträngar. Standardanalys (Standard Lucene) är språkoberoende, men begreppet att använda blanksteg och specialtecken (bindestreck och snedstreck) för att avgränsa strängar är mer tillämpligt för västliga språk än icke-västiska.
På till exempel kinesiska, japanska, koreanska (CJK) och andra asienspråk är ett blanksteg inte nödvändigtvis en ordavgränsare. Överväg följande japanska sträng. Eftersom den inte har några blanksteg skulle ett språkoberoende analysverktyg förmodligen analysera hela strängen som en token, när strängen i själva verket är en fras.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
I exemplet ovan skulle en lyckad fråga behöva inkludera den fullständiga token, eller en partiell token med hjälp av ett jokertecken med suffix, vilket resulterar i en onaturlig och begränsad sökupplevelse.
En bättre upplevelse är att söka efter enskilda ord: 明るい (Bright), 私たち experience (Our), 銀河系 (Galaxy). Att använda en av de japanska analysverktyg som är tillgängliga i Cognitive Search är mer troligt att låsa upp det här beteendet eftersom dessa analysverktyg är bättre utrustade med att dela upp text i meningsfulla ord på målspråket.
Jämföra Lucene och Microsoft Analyzers
Azure Cognitive Search stöder 35 språkanalysverktyg som backas upp av Lucene och 50 språkanalysverktyg som backas upp av microsofts egen teknik för bearbetning av naturligt språk som används i Office och Bing.
Vissa utvecklare föredrar kanske den mer bekanta, enkla lösningen med öppen källkod av Lucene. Lucene-språkanalysverktyg är snabbare, men Microsoft-analysverktygen har avancerade funktioner, till exempel lemmatisering, ordavsening (på språk som tyska, danska, nederländska, svenska, norska, slovakiska, finish, ungerska, slovakiska) och entitetsigenkänning (URL:er, e-postmeddelanden, datum, siffror). Om möjligt bör du köra jämförelser av både Microsoft- och Lucene-analysverktygen för att avgöra vilket som passar bäst. Du kan använda Analysera API för att se de token som genereras från en viss text med hjälp av ett specifikt analysverktyg.
Indexering med Microsoft-analysverktyg är i genomsnitt två till tre gånger långsammare än deras Lucene-motsvarigheter, beroende på språket. Sökprestanda bör inte påverkas avsevärt för frågor med genomsnittlig storlek.
Engelska analysverktyg
Standardanalysen är Standard Lucene, som fungerar bra för engelska, men kanske inte lika bra som Lucenes engelska analysverktyg eller Microsofts engelska analysverktyg.
Lucenes engelska analysverktyg utökar Standard Analyzer. Den tar bort possessiva (avslutande ) ord, tillämpar ordstamsigenkänning enligt Porter-algoritmen för ordstamsigenkänning och tar bort engelska stoppord.
Microsofts engelska analysverktyg utför lemmatisering i stället för ordstamsigenkänning. Det innebär att den kan hantera inflecteda och oregelbundna ordformer mycket bättre, vilket resulterar i mer relevanta sökresultat
Så här anger du ett språkanalysverktyg
Ange analysverktyget när indexet skapas innan det läses in med data.
I fältdefinitionen kontrollerar du att fältet tilldelas som "sökbart" och är av typen Edm.String.
Ange egenskapen "analyzer" till något av språkanalysverktygen från listan över analysverktyg som stöds.
Egenskapen "analyzer" är den enda egenskapen som accepterar ett språkanalysverktyg och används för både indexering och frågor. Andra analyzer-relaterade egenskaper ("searchAnalyzer" och "indexAnalyzer") accepterar inte en språkanalys.
Språkanalysverktyg kan inte anpassas. Om ett analysverktyg inte uppfyller dina krav kan du prova att skapa ett anpassat analysverktyg med microsoft_language_tokenizer eller microsoft_language_stemming_tokenizer och lägga till filter för bearbetning av för- och eftertokenisering.
I följande exempel visas en specifikation för språkanalys i ett index:
{
"name": "hotels-sample-index",
"fields": [
{
"name": "Description",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
{
"name": "Description_fr",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
Mer information om hur du skapar ett index och anger fältegenskaper finns i Skapa index (REST). Mer information om textanalys finns i Analysverktyg i Azure Cognitive Search.
Språkanalysverktyg som stöds
Nedan visas en lista över språk som stöds med Lucene- och Microsoft Analyzer-namn.
| Språk | Microsoft Analyzer-namn | Lucene Analyzer-namn |
|---|---|---|
| Arabiska | ar.microsoft | ar.lucene |
| Armeniska | hy.lucene | |
| Bangla | bn.microsoft | |
| Baskiska | eu.lucene | |
| Bulgariska | bg.microsoft | bg.lucene |
| Katalanska | ca.microsoft | ca.lucene |
| Kinesiska, förenklad | zh-Hans.microsoft | zh-Hans.lucene |
| Kinesiska, traditionell | zh-Hant.microsoft | zh-Hant.lucene |
| Kroatiska | hr.microsoft | |
| Tjeckiska | cs.microsoft | cs.lucene |
| Danska | da.microsoft | da.lucene |
| Nederländska | nl.microsoft | nl.lucene |
| Engelska | en.microsoft | en.lucene |
| Estniska | et.microsoft | |
| Finska | fi.microsoft | fi.lucene |
| Franska | fr.microsoft | fr.lucene |
| Galiciska | lucene | |
| Tyska | de.microsoft | de.lucene |
| Grekiska | el.microsoft | el.lucene |
| Gujarati | gu.microsoft | |
| Hebreiska | he.microsoft | |
| Hindi | hi.microsoft | hi.lucene |
| Ungerska | hu.microsoft | hu.lucene |
| Isländska | is.microsoft | |
| Indonesiska (Bahasa) | id.microsoft | id.lucene |
| Iriska | ga.lucene | |
| Italienska | it.microsoft | it.lucene |
| Japanska | ja.microsoft | ja.lucene |
| Kannada | kn.microsoft | |
| Koreanska | ko.microsoft | ko.lucene |
| Lettiska | lv.microsoft | lv.lucene |
| Litauiska | lt.microsoft | |
| Malayalam | ml.microsoft | |
| Malajiska (latinsk) | ms.microsoft | |
| Marathi | mr.microsoft | |
| Norska | nb.microsoft | no.lucene |
| Persiska | fa.lucene | |
| Polska | pl.microsoft | pl.lucene |
| Portugisiska (Brasilien) | pt-Br.microsoft | pt-Br.lucene |
| Portugisiska (Portugal) | pt-Pt.microsoft | pt-Pt.lucene |
| Punjabi | pa.microsoft | |
| Rumänska | ro.microsoft | ro.lucene |
| Ryska | ru.microsoft | ru.lucene |
| Serbiska (kyrillisk) | sr-cyrillic.microsoft | |
| Serbiska (latinsk) (Serbien) | sr-latin.microsoft | |
| Slovakiska | sk.microsoft | |
| Slovenska | sl.microsoft | |
| Spanska | es.microsoft | es.lucene |
| Svenska | sv.microsoft | sv.lucene |
| Tamilska | ta.microsoft | |
| Telugu | te.microsoft | |
| Thailändska | th.microsoft | th.lucene |
| Turkiska | tr.microsoft | tr.lucene |
| Ukrainska | uk.microsoft | |
| Urdu | your.microsoft | |
| Vietnamesiska | vi.microsoft |
Alla analysverktyg med namn som kommenteras med Lucene drivs av Apache Lucenes språkanalysverktyg.