window下SOLR安装详解。

1.Solr的安装步骤详解。
1.1 安装前准备工作。

  • tomcat 7.0.53
  • solr 4.0.26
  • window7系统
  • 分词器用的IKAnalyzer
    安装步骤:
    第一步:安装tomcat。如果解压缩版只需要解压即可。
    第二步:解压缩solr的包。
    重要的文件夹:dist、example

第三步:把dist\solr-4.10.3.war复制到tomcat的webapp目录下。改名为solr.war,改名不是必须的,为了方便访问。
第四步:解压war包。启动tomcat自动解压。解压完成后关闭tomcat。
第五步:需要把example\lib\ext\目录下所有的jar包添加到solr项目中。
第六步:需要创建一个solrhome(solr所有配置文件存放的目录)solr-4.10.3\example\solr文件夹就是一个标准的solrhome可以直接使用。把solr文件复制到D:\temp\1121目录下,改名为solrhome。改名不是必须,为了便于理解。
1、Solrhome下的collection1文件夹就是一个solrcore,一个solrcore就是一个独立的索引库。一个solr可以有多个solrcore。

2、collection1\conf下有一堆配置文件,就是对solrcore的配置。有两个重要的配置文件:
a) Schema.xml
b) Solrconfig.xml
window下SOLR安装详解。_第1张图片
3、Solrconfig.xml
a) luceneMatchVersion:匹配Lucene的版本
b) Lib就是solrcore的扩展jar包的位置。默认是collection1\lib文件夹。如果添加扩展jar包,没有lib就需要创建一个文件夹。
c) dataDir:索引库存放路径。默认是collection1\data文件夹。如果没有会自动创建。
d) requestHandler
window下SOLR安装详解。_第2张图片

可以使用默认配置,不需要修改配置。
第七步:告诉solr工程solrhome的位置。需要修改solr的web.xml文件。
window下SOLR安装详解。_第3张图片

第八步:启动tomcat
访问http://localhost:8080/solr/

安装成功访问会显示如下页面:
window下SOLR安装详解。_第4张图片
solr到此安装完毕。下面我们需要安装solr在项目中常用的插件.
2.数据导入(dataImport)插件安装(在项目中用来导入数据生成索引库使用的。)
2.1.首先在example中找到数据导入的两个jar包导入和数据库驱动的jar包。
window下SOLR安装详解。_第5张图片
注意:不要忘记导入数据库的jar包。
2.2在solrconfig中配置数据导入的插件。
window下SOLR安装详解。_第6张图片

2.3.data-config.xml中的内容,主要是用来连接数据库的。
window下SOLR安装详解。_第7张图片
window下SOLR安装详解。_第8张图片
dataImport插件安装完成。。
3.document的维护操作。
3.1索引库的增删改操作都使用此功能完成。
window下SOLR安装详解。_第9张图片

3.2.query功能
查询索引库功能。

其它的更新,删除操作都类似。
4. 索引库的维护
4.1添加文档
1、文档中必须有id域。
2、文档中使用的域的名称必须在schema.xml中定义。
4.2 Schema.xml
1、field:域的定义。在solr中域的名称必须先定义后使用。
a) Type:域的数据类型
b) Indexed:是否索引
c) Stored:是否存储
d) multiValued:是否多值
2、dynamicField动态域
只要域的名称能和动态域的名称向匹配就能使用。
3、uniqueKey。相当于mysql表中的主键。值必须唯一,并且id域必须存在。
4、copyField复制域
Source:源域
Dest:目标域
功能就是把源域的内容复制到目标域。
5、fieldType数据类型,域的类型定义。
a) Name:数据类型的名称
b) Class:对应数据类型实际的class
c) 如果想自定义分析器需要使用solr.TextField

5.配置自定义的数据类型
第一步:配置中文分析器
1、把IK分析器的jar包添加到solr的工程中。
2、
3、
4、需要把分析器的配置文件扩展词典放到solr工程的classpath下。Solr/WEB-INF/classes目录下。
第二步:在schema.xml中添加域类型的定义




第三步:重启tomcat
在schema.xml中添加如下配置。。。
window下SOLR安装详解。_第10张图片
6.1自定义域
添加商品表对应的域。一个字段对应一域。
搜索需要使用的域:商品名称、商品描述
过滤条件:商品分类名称、商品价格
展示图片:商品图片








添加文档,必须有id域,用到的域必须在schema.xml中定义。Id是不能重复的。
6.2删除文档
1.1.1 根据id删除文档

不要忘记提交。

1.1.2 根据查询删除

id:a002

如果查询条件是:就是删除全部文档。

1.2 修改文档
没有修改方法。只需要添加以新的文档,id和被修改的文档id一致即可。
原理:先删除后添加。

  1. 查询索引库
    7.1简介查询
    步骤:
    1、创建一个SolrServer对象
    2、创建一个查询对象SolrQuery对象。
    3、指定SolrQuery对象的查询条件、过滤条件等。
    4、执行查询。返回一查询结果。
    5、取查询结果并打印。
    //查询索引库
    @Test
    public void queryIndex() throws Exception {
    SolrServer solrServer = new HttpSolrServer(“http://localhost:8080/solr“);
    //创建一查询对象
    SolrQuery query = new SolrQuery();
    //指定查询条件
    //query.setQuery(“:“);
    query.set(“q”, “:“);
    //执行查询
    QueryResponse queryResponse = solrServer.query(query);
    SolrDocumentList solrDocumentList = queryResponse.getResults();
    //取查询结果总数量
    System.out.println(“查询结果总数量:” + solrDocumentList.getNumFound());
    System.out.println(“当前结果集中的记录数:” + solrDocumentList.size());
    //遍历结果集
    for (SolrDocument solrDocument : solrDocumentList) {
    //取属性并打印
    System.out.println(solrDocument.get(“id”));
    System.out.println(solrDocument.get(“product_name”));
    System.out.println(solrDocument.get(“product_price”));
    System.out.println(solrDocument.get(“product_picture”));
    System.out.println(solrDocument.get(“product_catalog_name”));
    }
    }
    7.2复杂的查询
    //复杂查询
    @Test
    public void searchIndex() throws Exception {
    SolrServer solrServer = new HttpSolrServer(“http://localhost:8080/solr“);
    //创建一查询对象
    SolrQuery query = new SolrQuery();
    //设置查询条件
    query.setQuery(“家天下”);
    //设置过滤条件
    query.addFilterQuery(“product_catalog_name:幽默杂货”, “product_price:[0 TO 50]”);
    //设置排序条件
    query.setSort(“product_price”, ORDER.asc);
    //分页条件
    query.setStart(0);
    query.setRows(20);
    //返回结果中包含的域
    query.setFields(“id”,”product_name”,”product_price”);
    //设置默认搜索域
    query.set(“df”, “product_keywords”);
    //开启高亮
    query.setHighlight(true);
    //设置高亮显示的域
    query.addHighlightField(“product_name”);
    //高亮前缀
    query.setHighlightSimplePre(““);
    //高亮后缀
    query.setHighlightSimplePost(“
    “);
    //执行查询
    QueryResponse response = solrServer.query(query);
    //取查询结果
    SolrDocumentList documentList = response.getResults();
    //取返回结果总数量
    System.out.println(“查询结果总数量:” + documentList.getNumFound());
    //取结果列表
    for (SolrDocument solrDocument : documentList) {
    //取属性并打印
    System.out.println(solrDocument.get(“id”));
    //取高亮显示
    Map

你可能感兴趣的:(Solr,-赵冬冬)