2016-06-28 10 views
0

で複数の単語を検索:今、私は何をしたいのかは私が持っているPagingAndSortingRepository春データリポジトリ

public interface BrowserLinkPagination extends PagingAndSortingRepository<BrowserLink, Long> { 
    List<BrowserLink> findByUserAndUriLike(User user, String uri, Pageable pageable); 

} 

uri列に複数の単語を検索することです。 Likeはかなり近いですが、文字列内の単語の出現順に依存します。
EDIT明確化のために:注文依存関係はまさに私が望まないものです。私は検索文字列を順序とは無関係にしたいので、LIKEは私が探しているものではありません。

これは、文字列で検索するいくつかの検索用語を持つのが一般的だと思いますが、実行するSQLを提供することで実装することができますが、それを表現する方法があれば、春データの用語am

私はproduction/postgresqlを開発/テスト用に使用しています。

+0

Iそれがあなたの問題を解決するとは思わないと思うが、あなたは "IN"を見るかもしれない:http://stackoverflow.com/questions/23902954/spring-data-can-it-find-by-tw-values-of -the-field-without-writing-the-imp- – alexbt

+0

私は、INのように、idsや類似のもののような正確なマッチがあるかどうかを知ることができます。私は、より多くの部分文字列検索が必要です。 – sveri

+0

注文が重要な場合は、 ''%%first%second%third% ''のようなもので 'LIKE'を使用することからあなたを抱きしめていますか?パフォーマンスは気が狂いますが、あなたが探しているものを見つけることができるはずです。 –

答えて

0

トピックの詳細を読んだ後、それは明らかなことですが、私はある種の全文検索が必要です。 postgresqlで提供されているものを使い始めるでしょう。私は短い作業例を見つけました:http://rachbelaid.com/postgres-full-text-search-is-good-enough/

ありがとうコメント。

0

メソッド名にInを使用してください。あなたの場合、それはそのようになります。

public interface BrowserLinkPagination extends PagingAndSortingRepository<BrowserLink, Long> { 
    List<BrowserLink> findByUserAndUriIn(User user, List<String> uri, Pageable pageable); 
} 

をあなたは春が作成した標準のAPIを使用している場合は、ブラウザのURIからの使い方は非常に簡単です - ちょうどアドレスを入力:

/your_api/browserlink/search/findByUserAndUriIn?user=xxx&uri=uri1,uri2,uri3 
関連する問題