搭建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 class IndexField {
    private String id;
    private String title;
    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 id;
    }

    @Field
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 留言的標題
     */
    public String getTitle() {
        return title;
    }

    @Field("msg_title")
    public void setTitle(String title) {
        this.title = 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 class SolrContext {
    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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM