經常在業務開發中會遇到大列表的查詢需求或者按照各項條件搜索內容,通常的作法每每都是數據庫直接搞定,可是到了必定的程度只有這類需求會帶來巨大的開銷,一個表格中涉及到了5張表的數據,搜索要求從其中3張表的不一樣字段作到模糊查詢,若是還用傳統的方式實現起來就頗有難度了邏輯和數據庫性能就是一個考驗,要是若是在A表一個字段是很長的text須要模糊匹配,在B表須要用簡拼音搜索,那就難上加難了,solr恰巧就解決了這些問題。html
附上:java
喵了個咪的博客:http://w-blog.cnmysql
Solr官網:http://lucene.apache.org/solr/linux
PS:8.0.0版本已經發布,本文使用此時較爲穩定的7.7.1版本web
通常要提到索引運用比較多的天然是ES,有着良好的性能,sql
Sola特色:數據庫
Elasticsearch特色:apache
Solr和Elasticsearch主要區別:json
安裝tomcat和jdk1.8vim
> wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --tomcat_option 2 --jdk_option 2 --reboot
下載solr配置好環境變量
> mkdir /app/install && cd /app/install > wget http://mirrors.shu.edu.cn/apache/lucene/solr/7.7.1/solr-7.7.1.tgz > tar -zxvf solr-7.7.1.tgz > mv solr-7.7.1 /usr/local/ > vim /etc/profile export PATH=/usr/local/solr-7.7.1/bin:$PATH > source /etc/profile
啓動solr
> solr start WARNING: Starting Solr as the root user is a security risk and not considered best practice. Exiting. Please consult the Reference Guide. To override this check, start with argument '-force' > solr start -force Waiting up to 180 seconds to see Solr running on port 8983 [\] Started Solr server on port 8983 (pid=8773). Happy searching!
PS:Solr自帶jetty能夠不依賴tomcat直接啓動
經過訪問8983端口就能夠進入到webui
雖然直接啓動也能夠,可是經過tomcat的方式更加可控爲了後續的集羣配置也更加推薦。
PS:經過oneinstack安裝的tomcat的根目錄在</data/wwwroot/default>下面
在tomcat包下的webapps目錄新建一個目錄,取名solr
> cd /data/wwwroot/default > mkdir solr
> cp -rf /usr/local/solr-7.7.1/server/solr-webapp/webapp/* /data/wwwroot/default/solr > cp -rf /usr/local/solr-7.7.1/server/lib/ext/* /data/wwwroot/default/solr/WEB-INF/lib > cp -rf /usr/local/solr-7.7.1/server/lib/metrics-* /data/wwwroot/default/solr/WEB-INF/lib > cp -rf /usr/local/solr-7.7.1/dist/solr-dataimporthandler-extras-7.7.1.jar /data/wwwroot/default/solr/WEB-INF/lib > cp -rf /usr/local/solr-7.7.1/dist/solr-dataimporthandler-7.7.1.jar /data/wwwroot/default/solr/WEB-INF/lib
> mkdir /home/solr-home > cp -rf /usr/local/solr-7.7.1/server/solr/* /home/solr-home/
> vim /data/wwwroot/default/solr/WEB-INF/web.xml <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/home/solr-home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> <!-- <security-constraint> <web-resource-collection> <web-resource-name>Disable TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Enable everything but TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method-omission>TRACE</http-method-omission> </web-resource-collection> </security-constraint> -->
配置solr日誌(可選) 將/solr-7.7.1/server/resources/下的log4j2.xml文件拷貝到solr/WEB-INF/classes/下,若是沒有則本身建立一個。
分別給予權限
> chown -R www:www /home/solr-home/ > chown -R www:www /data/wwwroot/default/solr/
訪問對應端口便可
http://172.16.2.75:8080/solr/index.html#/