2016-09-28 13 views
0

私はこのドメインオブジェクトを{スプリングデータ - MongoのDB - 検索

@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]"; 
} 
} 

@Document(collection = "LabelsPredefined") 

パブリッククラスLabelsPredefinedがあると私はオートコンプリートと、フロントエンドの入力を有します。したがって、ユーザーが最初のチャーを入力したときに検索を開始します。

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

私の問題は、全体の検索文字列は、オブジェクトメソッドの応答よりも、名前が一致する場合にのみ、ということである:これは私の春のデータリポジトリ方式です。可能な解決策はありますか?

答えて

0

私はこの構文を知らない:

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

たぶん、あなたは、文字列の代わりにTextCriteriaを渡して試してみてください:

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

とにあなたの署名方法を変更:

Set<LabelsPredefined> findLabelsPredefinedBySearchString(TextCriteria criteria);