2017-03-22 14 views
0

私はSpringブート+休止状態を使用する私のアプリケーションで検索機能を作成しています。データベースはMySQLです。 私のエンティティのいくつかのフィールドのデータを検索する必要があります。また、部分的なデータのマッチングを行いたいと思っています。基本的にMySQLのようなものです。春の起動と休止状態でのMysql 'Like'の検索

例:...

WHERE name LIKE '%searchText%' OR description LIKE '%searchText%'. 

私は@queryまたはfindByNameContainingを使用することができます知っています。しかし、データが増えるにつれて、これはあまり最適化されません。

私が検索するための一例として、これを使用:

http://blog.netgloo.com/2014/11/23/spring-boot-and-hibernate-search-integration/

これは、完全なデータの試合のために私のためにうまく働きました。しかし、私は部分的なデータのマッチングのためにこれをどのように利用できるのか分かりません。

EDIT:追加サンプルデータとより説明

例:私は次の行を持っている場合:

id  | name  | description      | type 

1  | sample  | this is a sample description  | Y 

2  | samples  | this is a description for samples | Y 

3  | not a match | this should not match    | Y 

4  | not a match | this should also not match  | Y 

結果:だから

1  | sample  | this is a sample description  | Y 

2  | samples  | this is a description for samples | Y 

、私はサンプルを探し、それを'sample'と 'samples'の最初の2行と一致する必要があります。名前または説明に 'sample'部分文字列がある場合は、さらに多くの行が検索されます。

さらに、検索句にフィールドを追加したいと思います。例: 'type'が 'Y'の行のみを検索する

私を助けてください。

ありがとうございます。

+0

を..あなたが疑問視更新し、適切なデータサンプルと – scaisEdge

+0

@scaisEdgeが追加され期待される結果を追加しますデータサンプル – newUser

答えて

0

あなたはRestriction.orRestriction.ilikeを使用することができますし、取得しますあなたが望むような結果:あなたは部分一致のためにどういう

Criterion cond1= Restrictions.ilike("name","%"+searchText+"%"); 
Criterion cond2= Restrictions.ilike("description", "%"+searchText+"%"); 
criteria.add(Restrictions.or(cond1, cond2)); 
関連する問題