2016-09-28 13 views
0

Ich habe dieses Domain-ObjektSpring Data - Mongo DB - Suche

@Document(collection = "LabelsPredefined") 

public class LabelsPredefined {

@TextIndexed 
private String name; 

public LabelsPredefined() { 
} 

public String getName() { 
    return name; 
} 

public void setName(final String name) { 
    this.name = name; 
} 

@Override 
public String toString() { 
    return "[LabelsPredefined]"; 
} 
} 

und ich habe eine Eingabe am Frontend mit dem automatischen Vervollständigung. Daher werde ich mit der Suche beginnen, wenn der Benutzer das erste Zeichen eingibt. Das ist mein Frühling Daten-Repository-Methode:

@Query("{$text : { $search : ?0 } }") 
Set<LabelsPredefined> findLabelsPredefinedBySearchString(final String searchString); 

Mein Problem ist, dass nur dann, wenn ganze Suchbegriffe Namen als Methode Antwortet das Objekt übereinstimmt. Gibt es eine mögliche Lösung?

Antwort

0

Ich weiß nicht, diese Syntax:

@Query("{$text : { $search : ?0 } }")

Vielleicht sollten Sie versuchen, eine TextCriteria anstelle der String übergeben:

TextCriteria criteria = TextCriteria.forDefaultLanguage() 
    .matchingAny(searchString); 

Und Ihre Signaturverfahren Wechsel zu:

Set<LabelsPredefined> findLabelsPredefinedBySearchString(TextCriteria criteria);