文章目錄
Solr初識
【一】介紹
Solr是一個高性能,採用Java開發,Solr基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。
其實我們大多數人都使用過Solr,也許你不會相信我說的這句話,但是事實卻是如此啊 ! 每當你想買自己喜歡的東東時,你可能會打開某寶或者某東,像這樣一搜,就能搜到很多東西,你知道你看到的這些數據都來自哪兒嗎?百度一下你就知道!這些數據來自哪兒嗎?等你瞭解完Solr後你就知道答案啦!
【二】安裝solr
- 準備linux服務器(centos7或者ubuntu)
- 安裝tomcat服務器
- 下載solr
1、官網 :http://lucene.apache.org/solr/
2、百度網盤鏈接:https://pan.baidu.com/s/1POq623aIPB6E7-hRYixC5Q
提取碼:26ku - 上傳solr包到linux
rz
- 解壓solr
tar -zxvf solr-4.10.3 /usr/local/
- 複製文件到tomcat服務器中
1、進入solr文件中
cd /usr/local/solr-4.10.3/example/webapps
2、複製solr.war
cd solr.war /usr/local/tomcat/webapps/
- 解壓war包
mkdir solr && unzip solr.war -d solr && rm -rf solr.war
- 修改配置
vim /usr/local/tomcat/webapps/solr/WEB-INF/web.xml
添加以下內容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-4.10.3/example/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
ps:/usr/local/solr-4.10.3/example/solr這個爲路徑
- 添加必要的包
cd /usr/local/solr-4.10.3/example/lib/ext/ && cp * /usr/local/tomcat/lib/cd /usr/local/solr-4.10.3/example/lib/ext/
- 啓動tomcat
cd /usr/local/tomcat/bin
./startup.sh
- 訪問
http://192.168.183.129:8080/solr
【三】添加中文分詞器
3.1 GUI的基本使用
3.2 添加中文分詞
- 上傳文件到linux的/usr/local/
鏈接:https://pan.baidu.com/s/1d2jWfjFNFo5lACAjPCxF9w
提取碼:exyb - 複製文件到相應的位置
1、傳到tomcat服務器上
cp /usr/local/IKAnalyzer2012FF_u1.jar /usr/local/tomcat/lib/
2、新建文件
mkdir /usr/local/tomcat/webapps/solr/WEB-INF/classes
3、複製文件到文件夾
cp /usr/local/IKAnalyzer.cfg.xml /usr/local/tomcat/webapps/solr/WEB-INF/classes
cp /usr/local/stopword.dic /usr/local/tomcat/webapps/solr/WEB-INF/classes
- 修改配置文件
vim /usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml
添加如下的配置:
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
- 添加自己的分詞庫
vim /usr/local/tomcat/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml
- 添加庫
touch /usr/local/tomcat/webapps/solr/WEB-INF/classes/ext.dic
添加內容自定義
馮文
靜態資源
今天要學習
java
閉關修煉
- 測試
【四】javaBean結合solr
4.1 創建maven項目
4.2 添加依賴
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
4.3 創建javaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
@Field("id")
private String id;
@Field("studentName")
private String studentName;
@Field("studentAge")
private Integer studentAge;
@Field("studentGrander")
private Integer studentGrander;
}
public class Main {
public static void main(String args[]) throws IOException, SolrServerException {
String url = "http://192.168.183.129:8080/solr";
SolrClient client = new HttpSolrClient.Builder(url).build();
queryStudent(client);
}
public static void delete(SolrClient client) throws IOException, SolrServerException {
client.deleteById("2.me");
client.commit();
}
public static void saveStudent(SolrClient client) throws IOException, SolrServerException {
for (int i = 0; i < 10; i++) {
String id = (i+10)+"";
String studentName = "學生"+i;
Integer studentAge = i+20;
Integer studentGrander = i%2;
client.addBean(new Student(id,studentName,studentAge,studentGrander));
}
client.commit();
}
public static void queryStudent(SolrClient client) throws IOException, SolrServerException {
SolrQuery query = new SolrQuery();
query.set("q","studentName:學生 AND studentAge:[22 TO 27]");
query.set("start",0);
query.set("rows",5);
query.set("sort","studentAge asc");
QueryResponse response = client.query(query);
List<Student> studentList = response.getBeans(Student.class);
System.out.println(studentList);
}
public static void test(SolrClient client) throws IOException, SolrServerException {
SolrInputDocument document = new SolrInputDocument();
document.setField("id","3");
document.setField("name","hong");
client.add(document);
client.commit();
}
}