Często zdarza się, że organizacje mają unikalną terminologię lub wiele sposobów na określenie pojęcia lub rzeczy. Aby ułatwić użytkownikom znajdowanie produktów podczas wyszukiwania, zdefiniuj synonimy, które pozwolą na ustalenie równoważności terminów.
Synonimy są definiowane przez indeksowanie elementów za pomocą dobrze znanego schematu _dictionaryEntry
.
Elementy typu _dictionaryEntry
mogą mieć te właściwości:
Właściwość | Typ | Opis | Wymagany? |
---|---|---|---|
_term |
string | Termin do zdefiniowania. Zalecane wartości to słowa lub wyrażenia bez łączników bez znaków interpunkcyjnych. | Wymagane |
_synonym |
string (repeated) | Alternatywne hasła, które mają być uwzględniane w zapytaniach pasujących do ciągu zdefiniowanego w sekcji _term . |
Wymagane |
_onlyApplicableForAttachedSearchApplications |
boolean | Umożliwia grupowanie synonimów według źródła danych i aplikacji wyszukiwania. Więcej informacji znajdziesz w artykule Definiowanie synonimów dla poszczególnych źródeł danych. | Opcjonalnie |
Gdy użytkownik uwzględni w zapytaniu wartość właściwości _term
, zapytanie skuteczne będzie brzmiało „wyrażenie OR synonimy”. Jeśli np. hasło "scifi" zostało zdefiniowane za pomocą synonimu "science fiction", zapytanie zawierające słowo "scifi" zostanie dopasowane do elementów, które zawierają "scifi" lub "science fiction."
Synonimy nie są stosowane dwukierunkowo. Jeśli zapytanie jest przeznaczone dla "science fiction," Cloud Search, nie stosuje żadnych synonimów. Zapytanie pasuje tylko do elementów zawierających "science fiction.". Elementy zawierające "scifi" są pomijane.
Aby oba terminy były wymienne, zdefiniuj je osobno:
Termin | Synonimy |
---|---|
scifi | science fiction |
science fiction | scifi |
Podczas przetwarzania zapytania przed zastosowaniem synonimów usuwane są znaki podziału wyrazów i inne znaki interpunkcyjne. Zapytanie użytkownika "sci-fi" pasuje do _term
. "sci fi." Aby utworzyć synonimy haseł, które użytkownicy mogą dzielić, najpierw znormalizuj zakres _term
tak, aby zamiast łączników użyj spacji.
W tym przykładzie zapytania użytkownika "sci-fi," "sci fi," "scifi," i "science fiction" są traktowane jako wymienne:
Termin | Synonimy |
---|---|
scifi | science fiction, sci fi |
sci fi | science fiction, scifi |
science fiction | scifi, sci fi |
Domyślnie synonimy w dowolnym źródle danych mają zastosowanie w całej domenie. Synonimy są stosowane we wszystkich aplikacjach wyszukiwania we wszystkich wyszukiwaniach niezależnie od źródła danych. Jeśli chcesz utworzyć synonimy dla konkretnego źródła danych, zapoznaj się z artykułem Definiowanie synonimów dla konkretnego źródła danych.
Definiowanie synonimów globalnych za pomocą pakietu SDK Cloud Search
Za pomocą pakietu SDK Content Connector możesz definiować terminy i ich synonimy. Instrukcje tworzenia oprogramowania sprzęgającego znajdziesz w artykule Tworzenie oprogramowania sprzęgającego treści.
Poniższy fragment kodu ilustruje tworzenie parametru RepositoryDoc
reprezentującego termin i synonim na podstawie rekordu w pliku CSV:
Definiując synonimy, pamiętaj o tych kwestiach:
- Wpisy synonimów muszą być publiczne w domenie. W poprzednim przykładzie jest to osiągane przez ustawienie uprawnień ACL na
DOMAIN_PUBLIC_ACL
. - Tych właściwości nie należy określać w pliku konfiguracji, ponieważ zastępują one w kodzie ustawienie publiczne domeny:
defaultAcl.mode=FALLBACK
defaultAcl.public=true
Definiowanie synonimów w wyszukiwarce
Domyślnie synonimy są stosowane do wszystkich źródeł danych we wszystkich aplikacjach wyszukiwania.
Załóżmy jednak, że Twoja organizacja ma oddzielne zespoły inżynierów i sprzedaży, a Ty chcesz zapewnić każdemu z nich inne możliwości wyszukiwania, w tym synonimy związane z ich rolami. W takim przypadku możesz utworzyć jedną wyszukiwarkę z synonimami i źródłem danych dla inżynierów oraz drugą wyszukiwarkę z synonimami i źródłem danych dla sprzedaży. Aby to osiągnąć, posortuj każdy synonim w konkretnym źródle danych za pomocą elementu _onlyApplicableForAttachedSearchApplications=true
. To ustawienie ogranicza synonimy tak, aby były stosowane tylko w przypadku aplikacji wyszukiwania, które zawierają określone źródło danych.
Na przykład dodanie tego wiersza kodu do poprzedniego przykładowego kodu sprawi, że zindeksowane synonimy będą dostosowane do źródła danych:
structuredData.put("_onlyApplicableForAttachedSearchApplications", true);