MongoDB 使用 JHIPSTER 进行全文搜索 / SPRING DATA MONGODB
MongoDB Full Text Search with JHIPSTER / SPRING DATA MONGODB
我正在尝试使用最新版本的 jhîpster (4.0.7) 和 spring 数据 mongodb.
进行一些全文查询
我创建了一个扩展 CrudRepository 的存储库:
public interface PublicSearchRepository extends CrudRepository<Transcriptionrequest, String> {
Page<Transcriptionrequest> findBy(TextCriteria textCriteria, Pageable pageable);
并按如下方式应用查询:
TextCriteria textCriteria = TextCriteria.forDefaultLanguage().caseSensitive(Boolean.FALSE);
textCriteria.matching(query);
Page<Transcriptionrequest> page = publicSearchRepository.findBy(textCriteria, pageable);
我的对象被注释索引了
@Document(collection = "transcriptionrequest")
public class Transcriptionrequest implements Serializable {
private static final long serialVersionUID = 1L;
@TextScore
private Float score;
@Id
private String id;
@Field("request_id")
private String request_id;
@NotNull
@Field("song_name")
@TextIndexed(weight = 2)
private String song_name;
当我尝试搜索时,我总是遇到这个错误:
org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 4 and error message 'Missing expected field "$search"' on server localhost:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 4 and error message 'Missing expected field "$search"' on server localhost:27017
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:107)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2134)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1977)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1783)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1766)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:640)
当我提高 mongo 类 的日志级别时,我有查询。永远不会发送搜索字段。
Created query Query: { }, Fields: null, Sort: null
2017-03-02 22:53:45.625 DEBUG 6428 --- [ XNIO-2 task-20] o.s.data.mongodb.core.MongoTemplate : find using query: { "$text" : { "$caseSensitive" : false}} fields: { "score" : { "$meta" : "textScore"}} for class: class info.touret.songtranscriptmarket.domain.Transcriptionrequest in collection: transcriptionrequest
2017-03-02 22:53:45.626 DEBUG 6428 --- [ XNIO-2 task-20] o.s.data.mongodb.core.MongoDbUtils : Getting Mongo Database name=[songtranscriptmarket]
我该如何解决?
感谢您的帮助
我的查询等于空。
在这种情况下,框架不会填充 $search 属性。
我正在尝试使用最新版本的 jhîpster (4.0.7) 和 spring 数据 mongodb.
进行一些全文查询我创建了一个扩展 CrudRepository 的存储库:
public interface PublicSearchRepository extends CrudRepository<Transcriptionrequest, String> {
Page<Transcriptionrequest> findBy(TextCriteria textCriteria, Pageable pageable);
并按如下方式应用查询:
TextCriteria textCriteria = TextCriteria.forDefaultLanguage().caseSensitive(Boolean.FALSE);
textCriteria.matching(query);
Page<Transcriptionrequest> page = publicSearchRepository.findBy(textCriteria, pageable);
我的对象被注释索引了
@Document(collection = "transcriptionrequest")
public class Transcriptionrequest implements Serializable {
private static final long serialVersionUID = 1L;
@TextScore
private Float score;
@Id
private String id;
@Field("request_id")
private String request_id;
@NotNull
@Field("song_name")
@TextIndexed(weight = 2)
private String song_name;
当我尝试搜索时,我总是遇到这个错误:
org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 4 and error message 'Missing expected field "$search"' on server localhost:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 4 and error message 'Missing expected field "$search"' on server localhost:27017
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:107)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2134)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1977)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1783)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1766)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:640)
当我提高 mongo 类 的日志级别时,我有查询。永远不会发送搜索字段。
Created query Query: { }, Fields: null, Sort: null
2017-03-02 22:53:45.625 DEBUG 6428 --- [ XNIO-2 task-20] o.s.data.mongodb.core.MongoTemplate : find using query: { "$text" : { "$caseSensitive" : false}} fields: { "score" : { "$meta" : "textScore"}} for class: class info.touret.songtranscriptmarket.domain.Transcriptionrequest in collection: transcriptionrequest
2017-03-02 22:53:45.626 DEBUG 6428 --- [ XNIO-2 task-20] o.s.data.mongodb.core.MongoDbUtils : Getting Mongo Database name=[songtranscriptmarket]
我该如何解决?
感谢您的帮助
我的查询等于空。 在这种情况下,框架不会填充 $search 属性。