Solr搜索引擎
中文分词器 IK Analyzer
- IK Analyzer配置
- IKAnalyzer*.jar添加到solr工程的lib目录
- 将扩展字典,停用词字典,配置文件放到WEB-INF/classes下
- 为Solrhome的schema.xml 文件配置FieldType
- 配置域 域相当于数据库的表字段,存放数据前,需要定义相关的Field,在schema.xml中
- name
- type
- indexed
- stored
- required 是否必须
- multiValued 是否多值 //复制域 //动态域 某些未来需要扩充的字段,比如规格 4G 5G ....
SpringDataSolr
1. applicationContext-solr.xml-
@Field 注解 public class TbItem implements Serializable{
@Field private Long id; @Field("item_title") private String title; ....
-
增加
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:applicationContext-solr.xml") public class TestTemplate { @Autowired private SolrTemplate solrTemplate; @Test public void testAdd(){ TbItem item=new TbItem(); item.setId(1L); item.setBrand("华为"); ... solrTemplate.savaBean(item); solrTemplate.commit();
-
按主键查询/删除
//查询 TbItem item = solrTemplate.getById(1, TbItem.class); //删除 solrTemplate.deleteById("1"); solrTemplate.commit(); //全部删除 Query query=new SimpleQuery("*:*"); solrTemplate.delete(query); solrTemplate.commit();
-
分页查询
public void testPageQuery(){ Query query=new SimpleQuery("*:*"); query.setOffset(20);//开始索引(默认0) query.setRows(20);//每页记录数(默认10) ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class); System.out.println("总记录数:"+page.getTotalElements()); List<TbItem> list = page.getContent(); showList(list);} private void showList(List<TbItem> list){ for(TbItem item:list){ System.out.println(item.getTitle() +item.getPrice());}}
-
条件查询
public void testPageQueryMutil(){ Query query=new SimpleQuery("*:*"); Criteria criteria=new Criteria("item_title").contains("2"); criteria=criteria.and("item_title").contains("5"); query.addCriteria(criteria); ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class); System.out.println("总记录数:"+page.getTotalElements()); List<TbItem> list = page.getContent(); showList(list);}