2017-06-07 6 views
0

Wenn Sie eine Indexdefinition in Azure Search erstellen, gibt es eine Möglichkeit, zusätzliche Stoppwörter nur für diesen Index hinzuzufügen. Wenn Sie beispielsweise Straßennamen indexieren, möchte man Road, Close, Avenue usw. entfernen.Azure Search - Zusätzliche Stoppwörter

Und wenn man das Feld nicht durchsuchbar macht, dh wenn das Ganze als ein Begriff indiziert ist, dann passiert was mit sowas Birken Hofstraße. Wäre der indizierte Begriff Birken Court? Vielen Dank

Antwort

0

Sie können einen zusätzlichen Satz von Stoppwörtern mit einem custom analyzer definieren. Zum Beispiel, ich bin auf dem Text Feld eine benutzerdefinierte Analyse Einstellung, die den Standard tokenizer verwendet,

{ 
"name":"myindex", 
"fields":[ 
    { 
     "name":"id", 
     "type":"Edm.String", 
     "key":true, 
     "searchable":false 
    }, 
    { 
     "name":"text", 
     "type":"Edm.String", 
     "searchable":true, 
     "analyzer":"my_analyzer" 
    } 
], 
"analyzers":[ 
    { 
     "name":"my_analyzer", 
     "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer", 
     "tokenizer":"standard_v2", 
     "tokenFilters":[ 
      "lowercase", 
      "english_stopwords", 
      "my_stopwords" 
     ] 
    } 
], 
"tokenFilters":[ 
    { 
     "name":"english_stopwords", 
     "@odata.type":"#Microsoft.Azure.Search.StopwordsTokenFilter", 
     "stopwordsList":"english" 
    }, 
    { 
     "name":"my_stopwords", 
     "@odata.type":"#Microsoft.Azure.Search.StopwordsTokenFilter", 
     "stopwords": ["road", "avenue"] 
    } 
] 
} 

In dieser Indexdefinition Klein Token-Filter und zwei Stoppwörter Token-Filter, eine für Standard-englische Stoppwörter und einen für den zusätzlichen Satz von Stoppwörtern. Sie können zum Beispiel mit dem Analyze API, das Verhalten Ihrer eigenen Analysator testen:

Anfrage:

{ 
    "text":"going up the road", 
    "analyzer": "my_analyzer" 
} 

Antwort:

{ 
    "tokens": [ 
    { 
     "token": "going", 
     "startOffset": 0, 
     "endOffset": 5, 
     "position": 0 
    }, 
    { 
     "token": "up", 
     "startOffset": 6, 
     "endOffset": 8, 
     "position": 1 
    } 
    ] 
} 

Analysatoren nicht angewendet werden, um nicht-durchsuchbare Felder, damit die Stopword in Ihrem Beispiel würde nicht entfernt werden. Weitere Informationen zur Abfrage und Dokumentverarbeitung finden Sie unter: How full text search works in Azure Search.

+0

Vielen Dank. Sehr hilfreich. Gibt es eine Möglichkeit, einen Analysator zu erstellen, der die Stoppwörter entfernt, aber alles andere intakt hält? d. h. wenn Stoppwörter "Straße" enthalten, dann wird der Analysator zum Tokenisieren: Birken Court Road als "Birken Court". Danke noch einmal. – user2981411