2015-10-14 12 views

Odpowiedz

6

Przypuśćmy Twoja jednostka User jest modelowany jako

@Document 
class User { 
    String firstName; 
    String middleName; 
    String lastName; 
    String emailId; 
} 

i chcą mieć indeksu tekstowego na podstawie jego imię, pola drugie imię, nazwisko i EMAILID surowy definicja indeksu MongoDB będzie wyglądać mniej więcej tak :

{ 
    firstName: "text", 
    middleName: "text", 
    lastName: "text", 
    emailId: "text" 
} 

aby create a text index na polach powyżej chcesz mieć wyszukiwanie pełnotekstowe włączona, wykonaj następujące czynności

TextIndexDefinition textIndex = new TextIndexDefinitionBuilder() 
    .onField("firstName") 
    .onField("middleName") 
    .onField("lastName") 
    .onField("emailId") 
    .build(); 

MongoTemplate mongoTemplate = new MongoTemplate(new Mongo(), "database"); // obtain MongoTemplate 
mongoTemplate.indexOps(User.class).ensureIndex(textIndex); 

Lub można utworzyć indeks automatycznie poprzez adnotacji mapowania:

@Document 
class User { 
    @TextIndexed String firstName; 
    @TextIndexed String middleName; 
    @TextIndexed String lastName; 
    @TextIndexed String emailId; 
} 
4

Najprostszym sposobem utworzenia indeksów w Mongo za pomocą sprężyny Java będą:

// Define ur mongo template defination 

DBObject indexOptions = new BasicDBObject(); 
indexOptions.put("a", 1); 
indexOptions.put("b", 1); 
indexOptions.put("c.d", 1); 
indexOptions.put("e.f", 1); 
CompoundIndexDefinition indexDefinition = 
      new CompoundIndexDefinition(indexOptions); 
mongoTemplate.indexOps(<Classname>.class).ensureIndex(indexDefinition); 

Indywidualny indeks można skonfigurować w definicji indeksu: mongoTemplate.indexOps(<Classname>.class).ensureIndex(indexDefinition.unique());

0

Wiosną mongodb 2.0.1

TextIndexDefinition textIndex = new TextIndexDefinition.TextIndexDefinitionBuilder().onField(indexName).build(); 

    mongoTemplate.indexOps(DINMonitorLog.class).ensureIndex(textIndex); 
Powiązane problemy