spring-data-solr 入门配置
来源:互联网 发布:房地产网络推广怎么做 编辑:程序博客网 时间:2024/05/23 05:10
spring-data-solr 入门配置
spring4+spring-data-solr2.6.x 整合代码
pom.xml
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-solr</artifactId> <version>2.0.6.RELEASE</version> </dependency> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-core</artifactId> <version>6.3.0</version> </dependency>
application-solr.xml
<solr:repositories base-package="com.*"/> <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"> <constructor-arg index="0" ref="solrClientFactory"/> </bean> <bean id="solrClientFactory" class="org.springframework.data.solr.server.support.HttpSolrClientFactoryBean"> <property name="url" value="http://localhost:8983/solr/jcg"/> <property name="timeout" value="15000"/> <property name="maxConnections" value="100"/> </bean> <bean id="simpleSolrRepository" class="org.springframework.data.solr.repository.support.SimpleSolrRepository"> <property name="solrOperations" ref="solrTemplate"></property> </bean>
Book.java
package com.solr;import org.apache.solr.client.solrj.beans.Field;import org.springframework.data.solr.core.mapping.SolrDocument;@SolrDocumentpublic class Book implements java.io.Serializable{ private static final long serialVersionUID = 8066442791230445208L; @Field private String id; @Field private String cat ; @Field private String name ; @Field private String price ; @Field private String inStock ; @Field private String author ; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCat() { return cat; } public void setCat(String cat) { this.cat = cat; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public String getInStock() { return inStock; } public void setInStock(String inStock) { this.inStock = inStock; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return this.getName() + " \t\t " + this.getAuthor(); }}
BookTest.java Junit Test
package com.xintian.weixin;import java.util.ArrayList;import java.util.List;import java.util.UUID;import java.util.stream.IntStream;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;import org.springframework.data.domain.Sort.Direction;import org.springframework.data.domain.Sort.Order;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringRunner;import com.solr.Book;import com.solr.BookRepositoryImpl;@RunWith(SpringRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class BookTest extends AbstractJUnit4SpringContextTests { @Autowired private BookRepositoryImpl bookRepository; @Test public void addBook() { List<Book> bks = new ArrayList<>(); IntStream.range(1, 50).forEach( n->{ Book bk = new Book(); bk.setId(UUID.randomUUID().toString().replace("-", "")); bk.setName("穷爸爸富爸爸 "+n); bk.setAuthor("李佳朋"); bk.setPrice(""+n); bk.setInStock("true"); bk.setCat("成功学"); bks.add(bk); }); bookRepository.save(bks);// Predicate predicate = new Predicate(key, value);// bookRepository.getSolrOperations().execute(new SolrCallback<Object>() {// @Override// public Object doInSolr(SolrClient solrClient) throws SolrServerException, IOException {// solrClient.query(params);// return null;// }// // }); } @Test public void deleteBook() { bookRepository.delete(bookRepository.findAll()); } @Test public void update() { Iterable<Book> allBook = bookRepository.findAll(); List<Book> udBook =new ArrayList<Book>(); allBook.forEach(b -> { b.setCat("小说集"); udBook.add(b); }); bookRepository.save(udBook); } @Test public void getBookOrderBy() { List<Order> orders = new ArrayList<>(); orders.add(new Sort.Order(Direction.DESC, "price")); Sort sort = new Sort(orders); bookRepository.findAll(sort).forEach(b -> { System.out.println(b); });; } @Test public void getPageBook() { Sort sort = new Sort(Direction.DESC, "price"); bookRepository.findAll(sort).forEach(b -> { System.out.println(b); });; System.out.println("\r\n"); Pageable pageable = new PageRequest(2,10,sort); bookRepository.findAll(pageable).forEach(b -> { System.out.println(b); });; } @Test public void findOne() { Book o = bookRepository.findOne("ca2c6b74acb74654a9e08e4d984808ac"); System.out.println(o); } @Test public void queryBook() { //// List<Book> list = bookRepository.queryBookByName("");// Query query = new SimpleQuery();// Criteria criteria = new Criteria("name");// criteria.contains("爸爸");// query.addCriteria(criteria);// Object o =bookRepository.getSolrOperations().queryForObject(query, Book.class);// System.out.println(o); }}
BookRepository.java
package com.solr;import java.util.List;public interface BookRepository { public List<Book> findByAvailable(Boolean available);}
BookRepositoryImpl.java
package com.solr;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.solr.core.SolrTemplate;import org.springframework.data.solr.repository.Query;import org.springframework.data.solr.repository.support.SimpleSolrRepository;import org.springframework.stereotype.Repository;@Repositorypublic class BookRepositoryImpl extends SimpleSolrRepository<Book, String> implements BookRepository { @Autowired private SolrTemplate solrTemplate; @Autowired public void setSolrOperations(){ super.setSolrOperations(solrTemplate); } @Query("inStock:?false") public List<Book> queryBookByName(String string) { return null; } @Override public List<Book> findByAvailable(Boolean available) { return null; }}
没有实现类也是可以查询的
package com.solr;import java.util.List;import org.springframework.data.repository.Repository;/** * 没有实现类也是可以查询的 * 去看看 TestBookNoImpl.test() * */public interface BookInterfaceRepository extends Repository<Book, String> { List<Book> findByName(String name);}
TestBookNoImpl.java
package com.xintian.weixin;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringRunner;import com.solr.Book;import com.solr.BookInterfaceRepository;@RunWith(SpringRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class TestBookNoImpl extends AbstractJUnit4SpringContextTests { @Autowired private BookInterfaceRepository productRepository; @Test public void test(){ List<Book> books = productRepository.findByName("爸爸"); System.out.println(books.size()); books.forEach( book -> { System.out.println(book); }); }}
查询是按方法名称命名
http://note.youdao.com/noteshare?id=82069fd1ce143285ae17ae2fd5f0e09c
继续研究中
jiaplee@qq.com
0 0
- spring-data-solr 入门配置
- solr快速入门的地址,spring-data/solr
- spring data solr 之多核配置
- Spring data Solr: Spring data Solr: IllegalArgum
- Spring data solr
- solr data-config.xml配置
- solr入门与配置
- SOLR入门配置说明
- Solr入门配置
- spring data solr 使用内嵌Solr服务器(单核)
- Spring Data REST入门(三):自定义配置
- spring Data Jpa入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- thinkphp数据库的查询,条件判断查询
- KindEditor编辑器内容分页js
- Android Activity Intent
- Mysql引擎 Innodb和MyISAM的区别
- mysql 版本区别
- spring-data-solr 入门配置
- Service + Notification(通知栏)实现断点下载
- 欢迎使用CSDN-markdown编辑器
- ORACLE 双谓词基数计算
- sas 替换字符串
- AC自动机算法笔记
- AlertDialog在触摸对话框边缘外部,对话框消失的问题
- Mongodb与Hbase的区别
- 【bzoj2049】【LCT】洞穴勘测