Ulepszanie indeksu w celu uwzględnienia wielu języków
Obsługę wielu języków można dodać do indeksu wyszukiwania. Obsługę języka można dodać ręcznie, podając wszystkie przetłumaczone pola tekstowe we wszystkich różnych językach, które chcesz obsługiwać. Możesz również użyć usług Azure AI Services, aby zapewnić przetłumaczony tekst za pośrednictwem potoku wzbogacania.
W tym miejscu dowiesz się, jak dodawać pola z różnymi językami do indeksu. Następnie ograniczysz wyniki do pól z określonymi językami. Na koniec utwórz profil oceniania, aby zwiększyć język macierzysty użytkowników końcowych.
Dodawanie pól specyficznych dla języka
Aby dodać wiele języków do indeksu, najpierw zidentyfikuj wszystkie pola, które wymagają tłumaczenia. Następnie zduplikuj te pola dla każdego języka, który chcesz obsługiwać.
Jeśli na przykład indeks ma pole opisu w języku angielskim, należy dodać description_fr dla francuskiego tłumaczenia i description_de dla języka niemieckiego. Dla każdego pola dodaj do swojej definicji odpowiedni analizator języka.
Definicja JSON indeksu może wyglądać następująco:
{
"name": "description",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
{
"name": "description_de",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "de.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
{
"name": "description_fr",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
{
"name": "description_it",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "it.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
Ograniczanie pól dla języka
W tym module pokazano już, jak ograniczyć pola zwracane w żądaniu wyszukiwania. Możesz również wybrać pola, które są przeszukiwane. Rozwiązanie do wyszukiwania specyficzne dla języka może łączyć te dwie funkcje, aby skupić się na polach z określonymi językami w nich.
search='parfait pour se divertir'&$select=listingId, description_fr, city, region, tags&$searchFields=tags, description_fr&queryType=full
searchFields
Użycie właściwości i select
w powyższych wynikach zwróci te wyniki z przykładowej bazy danych nieruchomości.
{
"@odata.context": "https://advanced-cognitive-search.search.windows.net/indexes('realestate-us-sample-index')/$metadata#docs(*)",
"value": [
{
"@search.score": 12.124968,
"listingId": "OTM4MjY1OA2",
"description_fr": "Il s'agit d'un condo et est parfait pour se divertir. Cette maison offre des vues côtières Situé à proximité d'une rivière et un bureau, moulures and une véranda couverte.",
"city": "Seattle",
"region": "wa",
"tags": [
"condo",
"entertaining",
"coastal views",
"river",
"office",
"crown mouldings",
"covered front porch"
]
},
Wzbogacanie indeksu za pomocą wielu języków przy użyciu usług Azure AI Services
Jeśli nie masz dostępu do tłumaczeń, możesz wzbogacić indeks i dodać przetłumaczone pola przy użyciu usług Azure AI Services.
Kroki to dodawanie pól dla każdego języka, dodawanie umiejętności dla każdego języka, a następnie mapowanie przetłumaczonego tekstu na poprawne pola.
Na przykład dodajmy tłumaczenia japońskie i ukraińskie do przykładowego indeksu właściwości sprzedaży detalicznej.
Dodawanie nowych pól
Do indeksu dodasz dwa nowe pola z tymi właściwościami: pierwszy do przechowywania tłumaczenia japońskiego i drugiego ukraińskiego:
{
"name": "description_jp",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "ja.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
{
"name": "description_uk",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "uk.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
}
Dodawanie zestawów umiejętności tłumaczenia
Do definicji zestawu umiejętności dodasz dwa umiejętności, aby przetłumaczyć document/description
pola na dwa języki.
"skills": [
{
"@odata.type": "#Microsoft.Skills.Text.TranslationSkill",
"name": "#1",
"description": null,
"context": "/document/description",
"defaultFromLanguageCode": "en",
"defaultToLanguageCode": "ja",
"suggestedFrom": "en",
"inputs": [
{
"name": "text",
"source": "/document/description"
}
],
"outputs": [
{
"name": "translatedText",
"targetName": "description_jp"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.TranslationSkill",
"name": "#2",
"description": null,
"context": "/document/description",
"defaultFromLanguageCode": "en",
"defaultToLanguageCode": "uk",
"suggestedFrom": "en",
"inputs": [
{
"name": "text",
"source": "/document/description"
}
],
"outputs": [
{
"name": "translatedText",
"targetName": "description_uk"
}
]
}
]
Mapowanie przetłumaczonych danych wyjściowych na indeks
Ostatnim krokiem jest zaktualizowanie indeksatora w celu zamapowania przetłumaczonego tekstu na indeks.
"outputFieldMappings": [
{
"sourceFieldName": "/document/description/description_jp",
"targetFieldName": "description_jp"
},
{
"sourceFieldName": "/document/description/description_uk",
"targetFieldName": "description_uk"
}
]
Wszystkie dokumenty mają teraz dwa nowe przetłumaczone pola opisu.
"value": [
{
"@search.score": 1,
"listingId": "OTM4MjI2NQ2",
"beds": 5,
"baths": 4,
"description": "This is an apartment residence and is perfect for entertaining. This home provides lakefront property located close to parks and features a detached garage, beautiful bedroom floors, and lots of storage.",
"description_de": "Dies ist eine Wohnanlage und ist perfekt für Unterhaltung. Dieses Haus bietet Seeliegenschaft Parks in der Nähe und verfügt über eine freistehende Garage schöne Zimmer-Etagen and viel Stauraum.",
"description_fr": "Il s'agit d'un appartement de la résidence et est parfait pour se divertir. Cette maison offre propriété au bord du lac Situé à proximité de Parcs et dispose d'un garage détaché, planchers de belle chambre and beaucoup de rangement.",
"description_it": "Si tratta di un appartamento residence ed è perfetto per intrattenere. Questa casa fornisce proprietà lungolago Situato vicino ai parchi e dispone di un garage indipendente, piani di bella camera da letto and sacco di stoccaggio.",
"description_es": "Se trata de una residencia Apartamento y es perfecto para el entretenimiento. Esta casa ofrece propiedad de lago situado cerca de parques y cuenta con un garaje independiente, pisos de dormitorio hermoso and montón de almacenamiento.",
"description_pl": "Jest to apartament residence i jest idealny do zabawy. Ten dom zapewnia lakefront Wlasciwosc usytuowany w poblizu parków i oferuje garaz wolnostojacy, piekna sypialnia podlogi and mnóstwo miejsca do przechowywania.",
"description_nl": "Dit is een appartement Residentie en is perfect voor entertaining. Dit huis biedt lakefront eigenschap vlakbij parken en beschikt over een vrijstaande garage, mooie slaapkamer vloeren and veel opslag.",
"description_jp": "これはアパートの住居であり、娯楽に最適です。 この家は公園の近くに位置する湖畔のプロパティを提供し、独立したガレージ、美しいベッドルームの床とストレージの多くを備えています。",
"description_uk": "Це багатоквартирна резиденція і прекрасно підходить для розваг. Цей будинок забезпечує нерухомість на березі озера, розташовану недалеко від парків, і має окремий гараж, красиві підлоги спальні та багато місць для зберігання речей.",
...
},