2017-02-21 2 views
1

Wir haben eine azurblaue Webanwendung, in der es ein Suchfeld gibt, wenn wir Text mit doppelten Anführungszeichen wie "App Service" eingeben, Datensätze mit "App Service" auflisten, aber auch Datensätze mit speziellen Zeichen zwischen den Wörtern wie "App/Service". Wir möchten, dass die Suchmaschine Datensätze zurückgibt, die exakt mit der Suchphrase übereinstimmen (keine Datensätze mit Sonderzeichen zwischen den Suchbegriffen enthalten).Azure Suche, genaue Wortgruppe

Antwort

1

In diesem Szenario möchten Sie den gesamten Inhalt eines Felds als einzelnes Token indizieren. Sehen Sie sich insbesondere Custom Analyzers in Azure Search und den Analysator keyword an.

+0

Hallo @Eugene, vielen Dank für die Beantwortung, nicht da ist eine Möglichkeit, Datensätze mit Sonderzeichen zwischen ihnen zu ignorieren, benutzerdefinierte Analysator scheint nicht möglich sein. – harshu288

1

In Ihrem Fall der standard Analysator bricht den Begriff App/Dienstleistung in zwei einzelne Begriffe App und Service während der Indexierung. Deshalb entspricht der Ausdruck "App Service" dem Dokument mit App/Service - beide Versionen sehen für die Suchmaschine gleich aus.

Wenn der Begriff App/Service den gesamten Inhalt eines Felds darstellt, können Sie den Inhalt dieses Felds als einzelnes Token mithilfe des Analysators keyword indizieren. Erfahren Sie mehr hier: Custom Analyzers in Azure Search.

Der keyword Analysator wird keine gute Option sein, wenn der Begriff App/Service als Teil eines Satzes auftritt. In diesem Fall können Sie das Zeichen / durch ein anderes Zeichen ersetzen, das der Tokenizer standard nicht teilt, zum Beispiel: _. Verwenden Sie das mappping Zeichen Token-Filter für das:

charFilters: [ 
    { 
    "name":"map_char_mapping", 
    "@odata.type":"#Microsoft.Azure.Search.MappingCharFilter", 
    "mappings":[ "/=>_" ] 
    }  
] 

Der folgende Beitrag wird Ihnen helfen zu verstehen, wie lexikalische Analysatoren bei Such- und Indizierungszeit angewendet werden: How to practially use a keywordanalyzer in azure-search?