修改各种配置文件。
1、修改solrhome下的solr.xml文件
注解掉zookeeper搭建集群配置,我们后面会采用master-slave的形式。
至于zookeeper的形式可以阅读以下这篇文章【solrCloud集群配置指导】:http://www.aboutyun.com/thread-9432-1-1.html
3、在【my_solr】文件夹中添加core.properties配置,内容如下:
4、将【solr-6.0.0\example\example-DIH\solr\solr】下的conf文件夹拷贝到【my_solr】文件夹下。包含如下文件:
【conf】中文件目录如下:
5、solr-5.0 以上默认对schema的管理是使用managed-schema,不能手动修改,需要使用Schema Restful的API操作。
如果要想手动修改配置,把【conf】文件夹中managed-schema拷贝一份修改为schema.xml,在solrconfig.xml中修改如下:
缺少DataImportHandler的jar等,那么将【solr-6.0.0\dist】下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar
拷贝到【apache-tomcat-8.0.33\webapps\solr\WEB-INF\lib】下。
重启tomcat8。如果缺少其他jar包,根据报错信息添加即可。没有异常,
访问:【http://localhost:8080/solr/index.html#/】
会出现如下界面:
选择my_solr,会出现如下界面:
至此其实由于没有索引数据,其实solr是个空壳,那么下面写一个应用程序插入solr索引数据。
参考:http://www.open-open.com/lib/view/open1452062296995.html
1、首先需要修改schema.xml文件,添加
2、新建测试类
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
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 java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MySolr {
//solr 服务器地址
public static final String solrServerUrl = "http://localhost:8080/solr";
//solrhome下的core
public static final String solrCoreHome = "mySolr";
//待索引、查询字段
public static String[] docs = {"Solr是一个独立的企业级搜索应用服务器",
"它对外提供类似于Web-service的API接口",
"用户可以通过http请求",
"向搜索引擎服务器提交一定格式的XML文件生成索引",
"也可以通过Http Get操作提出查找请求",
"并得到XML格式的返回结果"};
public static SolrClient getSolrClient(){
return new HttpSolrClient(solrServerUrl+"/"+ solrCoreHome);
}
/**
* 创建索引
*/
public static void createIndex() {
SolrClient client = getSolrClient();
int i=0;
List solrDocs = new ArrayList();
for (String content : docs) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", i++);
doc.addField("content_test", content);
solrDocs.add(doc);
}
try {
client.add(solrDocs);
client.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 搜索
*/
public static void search(){
SolrClient client = getSolrClient();
SolrQuery query = new SolrQuery();
query.setQuery("content_test:搜索");
query.setSort("id", SolrQuery.ORDER.asc);
QueryResponse response = null;
try {
response = client.query(query);
System.out.println(response.toString());
System.out.println();
SolrDocumentList docs = response.getResults();
System.out.println("文档个数:" + docs.getNumFound());
System.out.println("查询时间:" + response.getQTime());
for (SolrDocument doc : docs) {
System.out.println("id: " + doc.getFieldValue("id") + " content: " + doc.getFieldValue("content_test"));
}
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 更新索引(通过新增一条ID字段已存在,其他字段变化的索引实现更新)
*/
public static void updateIndex() {
SolrClient client = getSolrClient();
int id=3;
String content="向搜索引擎服务器提交一定格式的XML文件生成索引(此索引更新了)";
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", id);
doc.addField("content_test", content);
try {
client.add(doc);
client.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除索引
*/
public static void deleteIndex() {
SolrClient client = getSolrClient();
try {
client.deleteById("7");
client.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//createIndex();
search();
//updateIndex();
//deleteIndex();
}
}
3、运行成功后,会在【solrhome/my_solr】文件夹下创建一个【data】的文件夹,这个文件夹中的内容就是我们的solr索引。
其实其对于的是solconfig.xml中如下配置: