如何在mongo-spring聚合中使用文本搜索

时间:2016-01-21 08:54:09

标签: java spring spring-mongo fulltext-index

如何将简单的mongo shell $匹配词组翻译为equivelent 在Java中的mongo-spring中 - 使用聚合?

$match: { $text: { $search: "read" } } 

1 个答案:

答案 0 :(得分:1)

Spring-data内置了对文本搜索的支持。

我使用了以下依赖项:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.8.2.RELEASE</version>
</dependency>

尝试以下语法:

TextCriteria criteria = TextCriteria.forDefaultLanguage().matchingAny("read");

Query query = TextQuery.queryText(criteria);    

List<klass> list = mongoTemplate.find(query, klass, "collection_name");

有关详细信息,请参阅this

要在聚合中使用以下语法:

BasicDBObject match = new BasicDBObject("$match", 
                new BasicDBObject("$text", new BasicDBObject("$search", "COST")));

List<DBObject> aggregationList = new ArrayList<DBObject>();
aggregationList.add(match);

AggregationOutput aggregationOutput = mongoTemplate.getCollection("categoryMaster")
        .aggregate(aggregationList);

List<DBObject> dbObjects = (List<DBObject>) aggregationOutput.results();

dbobjects中转换此klass,如下所示:

for(DBObject dbObject : dbObjects) {
    mongoTemplate.getConverter().read(klass, dbObject);
}