搭建solr服务器(solr和tomcat整合)
一、搭建solr服务器1、新建apache-solr-3.5.0文件夹作为solr服务器,在apache-solr-3.5.0下新建home文件夹作为solr主目录,新建server文件夹作为服务器目录。
2、将solr中的example中的solr文件夹下全部内容拷贝到要作为服务器的home文件夹下。
3、将solr中的example中webapps下的solr.war拷贝到要作为服务器的server文件夹下并解压,解压后的文件重命名为solr。
4、修改home文件夹下solrconfig.xml文件,设置dataDir
5、设置tomcat的context,在tomcat的server.xml中添加。
6、为Context设置相应的环境变量,说明solr的home的主目录地址。
7、(第5、6步不可用的话)设置tomcat的context,在tomcat/conf/catalina/localhost下新建solr.xml,如果tomcat的conf文件夹下没有/catalina/localhost,可以自己创建,内容如下。
启动如果报错,取消VelocityResponseWriter输出格式,可将solrconfig.xml中queryResponseWriter末尾改为false
8、拷贝mmseg4j-all-1.8.5.jar到apache-solr-3.5.0\server\solr\WEB-INF\lib下
9、在schema.xml文件中添加mmseg4j分词器
9.1、首先在home下添加dic词库
9.2、配置mmseg4j分词器
10、至此本地就可以启动tomcat访问solr了
================================================================================================================================================
二、solr在项目中的应用
1、在schema.xml中添加自己的域
2、在索引域对象属性的set方法上添加@Field("域的name")
/** * 要添加的索引域对象,目的是将相应的对象转换为IndexField之后传输到IIndexService进行更新操作
*/
public>
private String>
private String> private List<String> content;
private List<String> atths;
private int parentId;
private int objId;
private Date createDate;
private String type;
/**
* 这个索引的唯一标识:如果是留言使用0_留言id来表示 如果是附件使用 留言ID_附件ID来表示
*/
public String getId() {
return> }
@Field
public void setId(String>
this.id => }
/**
* 留言的标题
*/
public String getTitle() {
return> }
@Field("msg_title")
public void setTitle(String> this.title => }
/**
* 留言的内容,转换后的内容(通过Tika转换)
*/
public List<String> getContent() {
return content;
}
@Field("msg_content")
public void setContent(List<String> content) {
this.content = content;
}
/**
* 当前对象的父类id,如果是留言,该id为0
*/
public int getParentId() {
return parentId;
}
@Field("msg_pid")
public void setParentId(int parentId) {
this.parentId = parentId;
}
/**
* 当前存储对象的id
*/
public int getObjId() {
return objId;
}
@Field("msg_id")
public void setObjId(int objId) {
this.objId = objId;
}
/**
* 创建的时间
*/
public Date getCreateDate() {
return createDate;
}
@Field("msg_date")
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public List<String> getAtths() {
return atths;
}
@Field("msg_atts")
public void setAtths(List<String> atths) {
this.atths = atths;
}
/**
* 操作的对象类型,可能是Message或者Attachment
*/
public String getType() {
return type;
}
@Field("msg_type")
public void setType(String type) {
this.type = type;
}
}
3、设置单例模式
public>
private final static String URL = "http://localhost:8080/solr";private static CommonsHttpSolrServer server = null;
static {try { server
= new CommonsHttpSolrServer(URL); }
catch (MalformedURLException e) { e.printStackTrace();
}
}
public static SolrServer getServer() {return server; }
}
页:
[1]