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
<!--打开注释-->
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<!--修改为solr数据的根文件目录-->
<env-entry-value>D:\solrHome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
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,使用中文分析器。
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
4\定义field,指定field的type属性为text_ik
<!--IKAnalyzer Field-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>
5\重启tomcat
solr
增加
选择:/collection1/documents
选择:json
Document(s):
{"id":"change.me","title":"change.me"}
点击:Submit Document
改 增加相同id 就可以修改
删除索引格式如下:
选择:/collection1/documents
选择:xml
1) 删除制定ID的索引
<delete>
<id>8</id>
</delete>
<commit/>
2) 删除查询到的索引数据
<delete>
<query>product_catalog_name:幽默杂货</query>
</delete>
<commit/>
3) 删除所有索引数据
<delete>
<query>*:*</query>
</delete>
<commit/>
点击: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 {@Testpublic 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();}@Testpublic void testDel() throws Exception{String baseURL = "http://localhost:8080/solr/";SolrServer server = new HttpSolrServer(baseURL);server.deleteByQuery("*:*", 1000);}@Testpublic 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();}@Testpublic void testSELECT() throws Exception{String baseURL = "http://localhost:8080/solr/";SolrServer server = new HttpSolrServer(baseURL);//查询条件SolrQuery solrQuery = new SolrQuery();//名称为台灯solrQuery.set("q", "product_name:台灯");//过滤条件1solrQuery.set("fq", "product_catalog_name:幽默杂货");//过滤条件2solrQuery.set("fq", "product_price:[* TO 20]");//排序solrQuery.addSort("product_price",ORDER.desc);//分页 从0solrQuery.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 <域名,list> >>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);}}}} 域名,list>