Solr



bin:solr的运行脚本

contrib:solr的一些贡献软件/插件,用于增强solr的功能。

dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。

docs:solr的API文档

example:solr工程的例子目录:

example/solr:

该目录是一个包含了默认配置信息的Solr的Core目录。

example/multicore:

该目录包含了在Solr的multicore中设置的多个Core目录。 

example/webapps:

    该目录中包括一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息





solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tocmat作为Servlet容器,环境如下:


Solr:Solr4.10.3

Jdk:jdk1.7.0_72

Tomcat:apache-tomcat- 8.5



Solr整合tomcat 3步



1\solr-4.10.3\example\webapps\solr.war 放到 tomcat 的webapps 里面 解压后

2\solr-4.10.3\example\lib\ext\*.jar 放到Tomcat 8.5\webapps\solr\WEB-INF\lib\下

3\solr-4.10.3\example\solr solr数据的根文件  放到你希望的目录中

Tomcat 8.5\webapps\solr\WEB-INF\web.xml 

       solr/home

D:\solrHome

       java.lang.String

   

  

solr 安装 中文分词器


1\IKAnalyzer2012FF_u1.jar 将jar 包 放到Tomcat 8.5\webapps\solr\WEB-INF\lib

2\ext.dic,IKAnalyzer.cfg.xml,stopword.dic 配置文件 放到Tomcat 8.5\webapps\solr\WEB-INF\classes(手动创建这个文件夹)或者放到 solr的classpath下。

3\在schema.xml中添加一个自定义的fieldType,使用中文分析器。

   

     

   

4\定义field,指定field的type属性为text_ik

   

   

5\重启tomcat







solr 

增加

选择:/collection1/documents

选择:json 

Document(s):

{"id":"change.me","title":"change.me"}

点击:Submit Document


改 增加相同id 就可以修改


删除索引格式如下:

选择:/collection1/documents

选择:xml

1) 删除制定ID的索引 

8

2) 删除查询到的索引数据 

product_catalog_name:幽默杂货

3) 删除所有索引数据

*:*

点击:Submit Document


选项:/collection1/query

添加各种添加

点击:Execute Query


使用dataimport插件批量导入数据。

1、把dataimport插件依赖的jar包添加到solrcore(collection1\lib)中

2、还需要添加mysql驱动

3、配置solrconfig.xml文件,添加一个requestHandler。

 

  data-config.xml
 
  

4、创建一个data-config.xml,保存到collection1\conf\目录下

  
   
   
   



  
  
  
  
  
  
   
   

5、如果不使用Solr提供的Field可以针对具体的业务需要自定义一套Field,如下是商品信息Field


   
   
   
   
   

   
   
   


  

  

  

  

搭建 solrj

maven:



org.apache.solr
solr-solrj
4.10.3


commons-logging
commons-logging
1.2


测试:

package com.stevezong.solrj;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
/**
 * Solrj 管理
 * 增上改查
 * @author zongx
 *
 */
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
public class SolrJManager {
@Test
public void testAdd() throws  Exception{
String baseURL = "http://localhost:8080/solr/";
SolrServer server = new HttpSolrServer(baseURL);
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "haha");
doc.setField("name", "steve");
server.add(doc);
server.commit();
}
@Test
public void testDel() throws Exception{
String baseURL = "http://localhost:8080/solr/";
SolrServer server = new HttpSolrServer(baseURL);
server.deleteByQuery("*:*", 1000);
}
@Test
public void testUpdate() throws Exception{
//更新和添加一样,Id 相同就是更新 Id 不同就是添加
String baseURL = "http://localhost:8080/solr/";
SolrServer server = new HttpSolrServer(baseURL);
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "haha");
doc.setField("name", "zong");
server.add(doc);
server.commit();
}
@Test
public void testSELECT() throws Exception{
String baseURL = "http://localhost:8080/solr/";
SolrServer server = new HttpSolrServer(baseURL);
//查询条件
SolrQuery solrQuery = new SolrQuery();
//名称为台灯
solrQuery.set("q", "product_name:台灯");
//过滤条件1
solrQuery.set("fq", "product_catalog_name:幽默杂货");
//过滤条件2
solrQuery.set("fq", "product_price:[* TO 20]");
//排序
solrQuery.addSort("product_price",ORDER.desc);
//分页 从0
solrQuery.setStart(0);
//分页 5行
solrQuery.setRows(5);
//默认域
solrQuery.set("df", "product_name");
//需要的域
solrQuery.set("fl", "id,product_name");
//开启高亮
solrQuery.setHighlight(true);
//高亮的域
solrQuery.addHighlightField("product_name");
//高亮的域的前缀
solrQuery.setHighlightSimplePre("");
//高亮域的后缀
solrQuery.setHighlightSimplePost("");
//普通的信息
QueryResponse response = server.query(solrQuery);
//高亮的信息
Map>> highlighting = response.getHighlighting();
//Map>>
SolrDocumentList docs = response.getResults();
for (SolrDocument solrDocument : docs) {
System.out.println(solrDocument.get("product_catalog_name"));
System.out.println(solrDocument.get("product_price"));
System.out.println(solrDocument.get("product_name"));
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("product_picture"));
Map> map = highlighting.get(solrDocument.get("id"));
List list = map.get("product_name");
for (String string : list) {
System.out.println(string);
}
}
}
}