2017-01-19 10 views
1

私はSpring Data Restで遊び始めたばかりで、MongoDBで索引付けされたテキストのフィールドのファインダーを公開したいと考えました。私は次のインデックス定義を持っています:MongoDBの全文検索は、SpringデータRESTで使用できますか?

@TextIndexed 
private String title; 

インデックスが作成されていることを確認しました。私は、リポジトリの定義にファインダメソッドを作成しました:

public interface ContentRespository extends MongoRepository<Content, String> { 
    public Page<Content> findByTitle(@Param("title") TextCriteria title, @Param("pageable") Pageable pageable); 
} 

をRESTのAPIのURLを呼び出すことにより:

http://localhost:8080/contents/search/findByTitle?title=test 

私は次のエラーを取得する:

2017-01-19 13:16:41.831 ERROR 16705 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.repository.support.QueryMethodParameterConversionException: Failed to convert test into org.springframework.data.mongodb.core.query.TextCriteria!] with root cause 

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [@org.springframework.data.repository.query.Param org.springframework.data.mongodb.core.query.TextCriteria] 
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:324) ~[spring-core-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
.... 

正しいだろう何REST APIを呼び出す方法は?私はそれについてのドキュメントを見つけることができません。または、どのようにTextCriteriaのコンバーターを書くことが可能でしょうか?

答えて

0

いくつかの時間後、私は戻って、これに来て、@query表記でファインダーを定義することで答えを見つけました:

@Query("{$text: {$search: ?0}}") 
public Page<Content> findByTitle(@Param("title") String title, @Param("pageable") Pageable pageable); 
0

mongoとは関係ありませんが、春休みでは着信文字列(あなたのWebリクエストから)を公開されたメソッドパラメータに変換することはできません。あなたは、2つのオプションている - 自分で作成および登録コンバータやラップ方法を質問して、必要な型に文字列を変換

+0

はい、このようなコンバータを書く方法はありますか? –

+0

Googleがそれを見つける手助けをするでしょう。しかし、いくつかのクラスでコンテンツリポジトリをラップするのは簡単です –

+0

私はそれをGoogleにすることができますが、私の質問は、REST APIを介して_TextIndexed_フィールドにアクセスするためのデフォルトの方法についての詳細です。 _Indexed_フィールドのその他のファインダメソッドは、そのまま使用できます。コンバーターの作成は2番目のオプションになります –

関連する問題