前臺啓動 cd solr-4.10.4\example java -jar start.jar java
中止 只能kill掉solr進程node
後臺啓動:java -DSTOP.PORT=8984 -DSTOP.KEY=solr -jar start.jar --daemon &web
中止:java -DSTOP.PORT=8984 -DSTOP.KEY=solr -jar start.jar --stopapache
STOP.PORT和STOP.KEY還能夠去solrui界面的java properties欄目中找bootstrap
啓動 solr-4.10.4/bin/solr startapp
中止 只能kill掉solr進程webapp
start, stop, restart, healthcheckui
solr start -helpspa
solr start [-f]:啓動solr,默認後臺運行.net
solr start -p <port>:指定solr實例端口
solr start -s <dir>:指定solr的solr.solr.home
solr start -d <dir>:指定solrweb項目根路徑(項目根路徑下必須有webapps/solr.war)
solr -p <port> -V:查看指定solr的運行基本信息
solr -i:查看有多少solr服務正在運行
solr stop -p <port>:中止運行在指定端口的solr服務
solr stop -all:中止全部solr服務
solr COMMAND --help:查看指定命令的幫助文檔
solr腳本底層也是調用的start.jar文件
1. 「:」 指定字段查指定值,如返回全部值*:*
2. 「?」 表示單個任意字符的通配
3. 「*」 表示多個任意字符的通配
4. 布爾操做符AND、&&
5. 布爾操做符OR、||
6. [] 包含範圍檢索,如檢索某價格區間,包含頭尾,price:[0 TO 100],TO 區分大小寫
7. {} 不包含範圍檢索,如檢索某價格區間,不包含頭尾price:{0 TO 100}
一、把IKAnalyzer2012FF_u1.jar包導入solr-web應用下的lib目錄下
如solr-4.10.4/example/solr-webapp/webapp/WEB-INF/lib
二、把IKAnalyzer.cfg.xml和stopword.dic文件放置到solr-web類路徑下
如 solr-4.10.4/example/solr-webapp/webapp/WEB-INF/classes
若是沒有classes文件 本身建立
三、修改schema.xml文件
<!--配置IK分詞器-->
<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>
四、在想要添加使用IKAnalyzer的字段的type加上text_ik
如 <field name="name" type="text_ik" indexed="true" stored="true"/>
一、新建一個分詞庫.dic的文件 如my.dic 該文件保存格式必須是UTF-8無BOM格式
二、把my.dic文件放置到solr-web類路徑下
如 solr-4.10.4/example/solr-webapp/webapp/WEB-INF/classes
三、修改IKAnalyzer.cfg.xml 添加內容 如 <entry key="ext_dict">my.dic;</entry>
package cn.crxy.solr_8;
import static org.junit.Assert.*;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse.Collation;
import org.apache.solr.client.solrj.response.SpellCheckResponse.Correction;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
public class SolrTest {
String baseURL = "http://192.168.1.170:8983/solr/collection1";
HttpSolrServer solrServer = new HttpSolrServer(baseURL );
/**
* 查詢
* @throws Exception
*/
@Test
public void test1() throws Exception {
SolrQuery params = new SolrQuery();
params.set("q", "*:*");
QueryResponse response = solrServer.query(params);
SolrDocumentList results = response.getResults();
//獲取數據總條數
//long numFound = results.getNumFound();
long numFound = results.size();
System.out.println("一共:"+numFound);
for (SolrDocument solrDocument : results) {
Collection<String> fieldNames = solrDocument.getFieldNames();
for (String field : fieldNames) {
System.out.println(field+"--"+solrDocument.get(field));
}
System.out.println("====================================");
}
}
/**
* 創建索引1
* @throws Exception
*/
@Test
public void test2() throws Exception {
SolrInputDocument docs = new SolrInputDocument();
docs.setField("id", "4");
docs.setField("name", "crxy");
solrServer.add(docs );
//solrServer.commit(true,true,true);
}
/**
* 創建索引2
* @throws Exception
*/
@Test
public void test3() throws Exception {
Person person = new Person();
person.setId("2");
person.setName("zs");
person.setAge("10");
solrServer.addBean(person);
solrServer.commit();
}
/**
* 刪除
* @throws Exception
*/
@Test
public void test4() throws Exception {
solrServer.deleteById("1");
//TODO--根據查詢條件查詢數據
solrServer.commit(true,true,true);
}
/**
* 拼寫檢查
* @throws Exception
*/
@Test
public void test5() throws Exception {
SolrQuery solrQuery = new SolrQuery();
solrQuery.set("qt", "/spell");
solrQuery.set("q", "name:crxx");
QueryResponse response = solrServer.query(solrQuery);
SolrDocumentList results = response.getResults();
long numFound = results.getNumFound();
if(numFound==0){
System.out.println("拼寫錯誤");
SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
List<Collation> collatedResults = spellCheckResponse.getCollatedResults();
for (Collation collation : collatedResults) {
long numberOfHits = collation.getNumberOfHits();
System.out.println("推薦詞語的個數:"+numberOfHits);
List<Correction> misspellingsAndCorrections = collation.getMisspellingsAndCorrections();
for (Correction correction : misspellingsAndCorrections) {
String source_data = correction.getOriginal();
String current_data = correction.getCorrection();
System.out.println("原始:"+source_data+"--推薦:"+current_data);
}
}
}else{
for (SolrDocument solrDocument : results) {
Collection<String> fieldNames = solrDocument.getFieldNames();
for (String field : fieldNames) {
System.out.println(field+"--"+solrDocument.get(field));
}
System.out.println("====================================");
}
}
}
/**
* 使用solrj操做solrcloud
* @throws Exception
*/
@Test
public void test6() throws Exception {
String zkHost = "192.168.1.170:2181";
CloudSolrServer solrServer = new CloudSolrServer(zkHost );
solrServer.setDefaultCollection("collection1");
SolrQuery solrQuery = new SolrQuery();
solrQuery.set("q", "*:*");
QueryResponse response = solrServer.query(solrQuery);
SolrDocumentList results = response.getResults();
System.out.println(results.size());
}
參考 https://my.oschina.net/xiaozhou18/blog/787132
在第一臺機器 上啓動 命令java -DzkHost=node22:2181,node33:2181,node44:2181 -DnumShards=2 -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -jar start.jar
在第二臺、第三臺、第四臺機器上 分別執行命令 java -DzkHost=node22:2181,node33:2181,node44:2181 -jar start.jar
參數解釋
-Djetty.port:指定jetty的端口
-DzkHost:指定zookeeper的地址
-DnumShards=2 :分片的個數
-Dbootstrap_confdir=./solr/collection1/conf:上傳配置文件
-Dcollection.configName=myconf :爲配置文件起一個名稱
出現以下界面表示啓動成功