2016-01-21 4 views

ответ

1

Spring-data имеет встроенную поддержку текстового поиска.

Я использовал следующие зависимости:

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

Try следующий синтаксис:

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); 
} 
+0

спасибо, вы знаете, как сделать это с помощью агрегации? – shemerk

+0

Спасибо! не смог найти этот пример в любом месте в Интернете! – shemerk

 Смежные вопросы

  • Нет связанных вопросов^_^