SpringDataSolr

俞新翰
2023-12-01


1.解压tomcat,解压solr压缩包,(solr-4.10.3.zip是window下,solr-4.10.3.tgz.tgz是linux)

2.——>Solr\solr-4.10.3\dist下找到 solr-4.10.3.war   放置到--->Tomcat\apache-tomcat-7.0.52\webapps下
            *(注意这里) 将solr-4.10.3.war 改名为solr方便访问*  

3.启动tomcat  Tomcat\apache-tomcat-7.0.52\bin   startup.bat点击启动


4.解压solr-4.10.3.war 之后  在Solr\solr-4.10.3\example\lib\ext 下  
复制里面所有的jar包(扩展包)到-》Tomcat\apache-tomcat-7.0.52\webapps\solr\WEB-INF\lib

            


5.solr的存储: 存储在Solr\solr-4.10.3\example\下的  solr文件夹

    讲solr文件夹 复制到任意盘符下的根目录  更名为solrhome
    
    打开solrhome:下面的  collection1  相当于一个数据库
    
    (重点)在solrhome\collection1\conf  目录下的  schema.xml相当于数据库设置  也是最主要的修改和配置文件
    
    
6.在solr-4.10.3.war解压后的    Tomcat\apache-tomcat-7.0.52\webapps下 web.xml 中修改

<!--
 <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/put/your/solr/home/here</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
   -->
   
   将此标签打开并在<env-entry-value>/put/your/solr/home/here</env-entry-value>中配置 solrhome的路径
   
   
   <env-entry-value>D:\solrhome</env-entry-value>
   
   
7.启动tomcat  在页面访问http://localhost:8080/solr   出现页面即为成功  
*如果访问不成功检查一下Tomcat\apache-tomcat-7.0.52\webapps  solr的名称(war包解压的之后的名称)
*或者端口占用

8.配置IKAnalyzer中文分词器
    (1).解压压缩包
    (2).将IKAnalyzer2012FF_u1.jar放置在 -》Tomcat\apache-tomcat-7.0.52\webapps\solr\WEB-INF\lib
    (3).在Tomcat\apache-tomcat-7.0.52\webapps\solr\WEB-INF 新建文件夹 classes 文件夹
        将ext_stopword.dic  : 停词词典
            IKAnalyzer.cfg.xml :  配置扩展词典和 停词词典的位置
            mydict.dic :  扩展词典
            
        这三个文件放置在    classes文件夹下
            
    (4).在solrhome\collection1\conf  目录下的  schema.xml     
            加入配置:  (配置字段类型 text_ik (可以自定义)  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 配置的是分析器,就是导入的IKAnalyzer2012FF_u1.jar,使用的是其中一个类)
            
            <fieldType name="text_ik" class="solr.TextField">
                <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
            </fieldType>
            
    (5).重启tomcat  
 

 

 

逻辑分析:  第一次将数据库中的数据用solrUtil这个module导入solr之后,查询或者条件查询只是从solr这个nosql数据库中查询,
而不再和数据库有交互, 


//pojo层导包
<dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-solr</artifactId>
        <version>1.5.5.RELEASE</version>
    </dependency> 
    
    

//导入配置文件
    applicationContext-solr.xml
    
    
    
    
//@File 注解  (在对应的实体类中)

    @Field :意思是把Java对象的属性和solr里面配置的域进行一一对应。
    如果没有写参数,默认值为属性名称
    @Field
    private String id;
    @Field("name")
    private String username;
    @Field("cat")
    private String passwrod;


//小案例: * 这里是service 层 从solr中查询 
    @Autowired
    private SolrTemplate solrTemplate;
-------------------------------------》》》》    
    TbItem item=new TbItem();
        item.setId(1L);.......
    solrTemplate.saveBean(item);
    solrTemplate.commit();          //一定要记得提交  *增删改 都要commint()
-------------------------------------》》》》    
    TbItem item = solrTemplate.getById(1, TbItem.class);//按主键查询
-------------------------------------》》》》    
    solrTemplate.deleteById("1");//按主键删除
    solrTemplate.commit();
-------------------------------------》》》》    
    solrTemplate.saveBeans(list);    //添加一个集合
    solrTemplate.commit();
-------------------------------------》》》》
    Query query=new SimpleQuery("*:*");//删除所有
    solrTemplate.delete(query);
    solrTemplate.commit();
-------------------------------------》》》》
    Query query=new SimpleQuery("");//按条件删除
    Criteria criteria=new Criteria("item_title").contains("2");  //设置一个条件
    
    Criteria criteria=new Criteria("item_title").in(集合);
    
        query.addCriteria(criteria);
    solrTemplate.delete(query);
    solrTemplate.commit();
-------------------------------------》》》》        

    ****分页查询
    
    Query query=new SimpleQuery("*:*");
    query.setOffset(20);//开始索引(默认 0) 从第20条开始
    query.setRows(20);//每页记录数(默认 10)        查询20条数据
    ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class);
    
    List<TbItem> list = page.getContent();  //当前页的数据
    
    page.getTotalElements()  //总记录数
    page.getTotalPages()  //总页数
-------------------------------------》》》》    

    ****条件查询
    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);
    List<TbItem> list = page.getContent();  //当前页的数据
    page.getTotalElements()  //总记录数
    page.getTotalPages()  //总页数
-------------------------------------》》》》    


//Controller        
    @Reference
    private ItemSearchService itemSearchService;
    
    @RequestMapping("/search.do")
    public Map search(@RequestBody Map searchMap){
        
        return itemSearchService.search(searchMap);
        
    }
    

        
    

 类似资料:

相关阅读

相关文章

相关问答