Ich implementiere Hibernate -Suche 6 in meiner Spring -Boot -Anwendung. Ich brauche die Fähigkeit, nach teilweisen Übereinstimmungen zu suchen, ähnlich wie % wie % in SQL. Aus der Dokumentation und anderen Foren scheint es, dass die Hibernate -Suche 6 die explizite Unterstützung der Übereinstimmung beseitigt und durch die Wild Card -Abfragen ersetzt hat. Hier ist mein relevanter Testbettcode, um das Szenario zu reproduzieren: < /p>
Testdaten: < /p>
phonenumber,area_zone,state
9871234567,DL,Delhi
9871234568,HR,Haryana
9871234569,PB,Punjab
9871234578,UP,Uttar Pradesh
9871234579,TS,Telangana
9871234479,AP,Andhra Pradesh
< /code>
mein dto: < /p>
@Entity
@Table(name="PHONENUMBER", uniqueConstraints = {@UniqueConstraint(columnNames = "phonenumber")})
@Indexed
public class PhoneNumber {
@Id
@GeneratedValue
private int id;
//@FullTextField(searchAnalyzer = "custom_analyzer")
@GenericField(sortable= Sortable.YES)
private String phonenumber;
@GenericField(sortable=Sortable.YES)
private String area_zone;
@GenericField(sortable= Sortable.YES)
private String state;
}
< /code>
Hier ist die Implementierung meines Custome JPA -Repo für die Durchsuchung von Hibernate: < /p>
public class CustomSearchRepositoryImpl implements CustomSearchRepository {
@PersistenceContext
private EntityManager em;
//Hibernate Search 6
@Override
public List
search(String terms, int limit, int offset) {
System.out.println(">>>>>searching for " + terms);
return Search.session(em).search(PhoneNumber.class)
.where(f -> f.match()
.fields("phonenumber", "area_zone", "state")
.matching(terms))
.fetchHits(offset, limit);
}
}
< /code>
Die Suche wird durch die API: /Search ausgelöst. The results are:
- /api/search/AP : 9871234479 AP Andhra Pradesh
- /api/search/Punjab : 9871234569 PB Punjab
- /api/search/Pun : NO RESULTS
- /api/search/pb: 9871234569 pb punjab
- /api/such/uttar: Keine Ergebnisse
- /api/such/987: Keine Ergebnisse
Die FULL -Übereinstimmung. Würde Empfehlungen benötigen, um die teilweise Suchfunktion zu erstellen.>
Ich implementiere Hibernate -Suche 6 in meiner Spring -Boot -Anwendung. Ich brauche die Fähigkeit, nach teilweisen Übereinstimmungen zu suchen, ähnlich wie % wie % in SQL. Aus der Dokumentation und anderen Foren scheint es, dass die Hibernate -Suche 6 die explizite Unterstützung der Übereinstimmung beseitigt und durch die Wild Card -Abfragen ersetzt hat. Hier ist mein relevanter Testbettcode, um das Szenario zu reproduzieren: < /p>
Testdaten: < /p>
phonenumber,area_zone,state
9871234567,DL,Delhi
9871234568,HR,Haryana
9871234569,PB,Punjab
9871234578,UP,Uttar Pradesh
9871234579,TS,Telangana
9871234479,AP,Andhra Pradesh
< /code>
mein dto: < /p>
@Entity
@Table(name="PHONENUMBER", uniqueConstraints = {@UniqueConstraint(columnNames = "phonenumber")})
@Indexed
public class PhoneNumber {
@Id
@GeneratedValue
private int id;
//@FullTextField(searchAnalyzer = "custom_analyzer")
@GenericField(sortable= Sortable.YES)
private String phonenumber;
@GenericField(sortable=Sortable.YES)
private String area_zone;
@GenericField(sortable= Sortable.YES)
private String state;
}
< /code>
Hier ist die Implementierung meines Custome JPA -Repo für die Durchsuchung von Hibernate: < /p>
public class CustomSearchRepositoryImpl implements CustomSearchRepository {
@PersistenceContext
private EntityManager em;
//Hibernate Search 6
@Override
public List
search(String terms, int limit, int offset) {
System.out.println(">>>>>searching for " + terms);
return Search.session(em).search(PhoneNumber.class)
.where(f -> f.match()
.fields("phonenumber", "area_zone", "state")
.matching(terms))
.fetchHits(offset, limit);
}
}
< /code>
Die Suche wird durch die API: /Search ausgelöst. The results are:
[list]
[*]/api/search/AP : 9871234479 AP Andhra Pradesh
[*]/api/search/Punjab : 9871234569 PB Punjab
[*]/api/search/Pun : NO RESULTS
[*]/api/search/pb: 9871234569 pb punjab
[*]/api/such/uttar: Keine Ergebnisse
[*]/api/such/987: Keine Ergebnisse
[/list]
Die FULL -Übereinstimmung. Würde Empfehlungen benötigen, um die teilweise Suchfunktion zu erstellen.>