【问题标题】:MongoDB Full Text Search with JHIPSTER / SPRING DATA MONGODB使用 JHIPSTER / SPRING DATA MONGODB 进行 MongoDB 全文搜索
【发布时间】:2017-03-02 22:17:50
【问题描述】:

我正在尝试使用最新版本的 jhîpster (4.0.7) 和 spring data 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]

我该如何解决这个问题?

感谢您的帮助

【问题讨论】:

  • 您可以在创建TextCriteria obj 的位置添加代码吗?你的 spring mongo db 版本是什么?
  • 嗨,我用 textcriteria 创建更新了我的帖子
  • TextCriteria 创建部件看起来不错,只是为了确保 query 是匹配值并且具有有效值对吗?
  • 我使用 spring-data-mongodb 1.10.0-RELEASE 。它与 jhipster 捆绑在一起
  • 谢谢你解决了我的问题。查询参数为空

标签: spring mongodb spring-data jhipster spring-data-mongodb


【解决方案1】:

我的查询等于 null。 在这种情况下,框架不会填充 $search 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多