2016-07-06 5 views
0

Я использую Elasticsearch 2.3 - API-интерфейс Nest для поиска данных. Я использую сопоставление атрибутов для документов. Я хотел бы знать, как использовать Phonetic Analyzer, используя сопоставление атрибутов.Elasticsearch 2.3 - гнездо - с помощью фонетического анализатора

Класс документа:

[ElasticsearchType(Name = "contact", IdProperty = nameof(EntityId))] 
public class ESContactSearchDocument 
{ 
    [String(Name = "entityid")] 
    public string EntityId { get; set; } 

    [String(Name = "id")] 
    public string Id { get; set; } 

    [String(Name = "name")] 
    public string Name { get; set; } 

    [String(Name = "domain")] 
    public string Domain { get; set; } 

    [String(Name = "description")] 
    public string Description { get; set; } 

    [String(Name = "email")] 
    public string Email { get; set; } 

    [String(Name = "firstname", Analyzer = "phonetic")] 
    public string FirstName { get; set; } 

    [String(Name = "lastname", Analyzer = "phonetic")] 
    public string LastName { get; set; } 
} 

создания индекса и вставки:

var createIndexResponse = serviceClient.CreateIndex(indexName, c => c.Mappings(m => m.Map<ESContactSearchDocument>(d => d.AutoMap()))); 

var indexManyResponse = await serviceClient.IndexManyAsync(ESMapper.Map<TDocument, ESContactSearchDocument>(documentsBatch), indexName, typeName); 

ESMapper используется только для преобразования из одного типа в другой.

Результирующая отображение:

{ 
    "contact-uklwcl072": { 
    "mappings": { 
     "contact": { 
     "properties": { 
      "description": { 
      "type": "string" 
      }, 
      "domain": { 
      "type": "string" 
      }, 
      "email": { 
      "type": "string" 
      }, 
      "entityid": { 
      "type": "string" 
      }, 
      "firstname": { 
      "type": "string" 
      }, 
      "id": { 
      "type": "string" 
      }, 
      "lastname": { 
      "type": "string" 
      }, 
      "name": { 
      "type": "string" 
      } 
     } 
     } 
    } 
    } 
} 

Я также установил Phonetic Analysis Plugin

ответ

0

Take a look at the automapping documentation; вам нужно присвоить имя анализатора к Analyzer собственности на атрибуте

public class Document 
{ 
    [String(Analyzer="phonetic")] 
    public string Name {get; set;} 
} 

затем вызвать AutoMap() при отображении типа документа например при создании индекса

client.CreateIndex("index-name", c => c 
    .Mappings(m => m 
     .Map<Document>(d => d 
      .AutoMap() 
     ) 
    ) 
); 

дает

{ 
    "mappings": { 
    "document": { 
     "properties": { 
     "name": { 
      "type": "string", 
      "analyzer": "phonetic" 
     } 
     } 
    } 
    } 
} 
+0

Спасибо за ваш ответ, но приведенный выше код не дает «фонетический» анализатор, я получаю то же самые отображения документа. –

+0

@ShahidAzim вы можете показать код для того, что вы делаете, в вопросе? –

+0

Я включил весь необходимый код. –

Смежные вопросы