Solr7.1搭建與整合(windows)
-版本solr-7.1.0
-環境 Windows jdk1.8
-框架 SSM
-啟動方式:部署在apache-tomcat-8.5.23,以下簡稱Tomcat
1. 將solr-7.1.0\server\solr-webapp下的webapp複製到Tomcat\webapps下,並改名solr;
2. 將solr-7.1.0\server\lib下的ext下的所有jar包複製到Tomcat\webapps\solr\WEB-INF\lib下,以及
solr-7.1.0\server\lib下以metrics開頭的jar、gmetric4j-1.0.7.jar複製到Tomcat
3. 在Tomcat\webapps\solr\WEB-INF下建立classes資料夾,並把solr-7.1.0\server\resources下的log4.perportiy複製到 classes檔案下;
4. 修改修改Tomcat\bin下的catalina.bat,增加solr.log.dir系統變數,指定solr日誌記錄存放地址。
if not "%JSSE_OPTS%" == "" goto gotJsseOpts set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048" :gotJsseOpts set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" --增加下一行 set "JAVA_OPTS=%JAVA_OPTS% -Dsolr.log.dir=D:\Solr-7\solr_home\logs"
5. 在任意地方建立資料夾solr_home,把solr-7.1.0\server下solr下的所有檔案複製到這個solr_home下,在這裡,我建立在Solr-7.1.0的同級目錄下了,並且修改配置檔案Tomcat\webapps\solr\WEB-INF\web.xml,將下面配置的註釋放開,黑體部分更改為你的solr-home地址。
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:\Solr-7\solr_home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
並註釋下面部分:
<!-- Get rid of error message
<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>
-->
6. 配合solr日誌記錄存放地址,在solr-home下新建logs資料夾,此處與配置4位置配置路徑一致;
7. 拷貝solr-7.1.0下contrib和dist資料夾至solr-home目錄下。
8. 在solr-home目錄下新建new_core資料夾;並拷貝solr-7.1.0\server\solr\configsets_default\目錄下conf資料夾至solr-home\new_core下。
9. 修改solr-home\new_core\conf\solrconfig.xml檔案,如下
<!--
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
-->
<lib dir="${solr.install.dir:../}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="ojdbc\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-dataimporthandler\d.*\.jar" />
11. 配置Ik分詞器,首先匯入ik的jar ik-analyzer-solr5-5.x 和 solr-analyzer-ik-5.1.0 兩個jar包
匯入Tomcat\webapps\solr\WEB-INF\lib下
然後配置solr_home\new_core\conf下的managed-schema檔案加入
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index"> --此處為建立索引分詞
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query"> -- 此處為查詢分詞索引
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="查詢欄位" type="text_ik" indexed="true" stored="true"/>
<field name="productName" type="text_ik" indexed="true" stored="true"/>
到此IK分詞設定完成。
12. Solr與Spring整合
建立spring-context-solr.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"
default-lazy-init="true">
<!--定義solr的server-->
<bean id="httpSolrClient" class="org.apache.solr.client.solrj.impl.HttpSolrClient">
<constructor-arg value="http://location/solr/new_core"/>
</bean>
</beans>
13. 建立測試類SorlJTest
@ContextConfiguration(locations = { "classpath*:/spring-context*.xml" })
public class SolrJTest extends AbstractTransactionalJUnit4SpringContextTests {
private static final Log log = LogFactory.getLog(SolrJTest.class);
@Autowired
private HttpSolrClient client;
@Test
public void test() throws IOException, SolrServerException {
SolrQuery solr = new SolrQuery();
solr.setQuery("productName:蘋果");
QueryResponse queryResponse =client.query(solr);
//拿到資料集合,返回查詢結果
List<SolrDocument> list =queryResponse.getResults();
System.out.println(list);
}
}
14.有關IK分詞,粗細力度查詢
上面11中
useSmart="false" 為智慧分詞 false 關閉狀態 預設最細力度分詞
useSmart="true" 為智慧分詞 true 開啟狀態 預設最粗力度分詞
智慧分詞的開關,根據自身業務的需求來進行設定,此處設定粗粒度查詢 匹配度最高在第一位
15. 配置檔案-自動匯入資料庫資料
在solr_home\new_core\conf下新建data-config.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource
type="JdbcDataSource"
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.00.000:1521:XXXX"
user="XXXXXX"
password="XXXXXXX"/>
<document>
<entity name="XXXXXX" pk="USERID"
query="select
NMSKY,
NMSKY,
USER_ID,
USERNAM,
USERRAT
from XXXXXX"
deltaQuery="select USER_ID as USERID from XXXXXX where to_char(TIME,'YYYY-MM-DD HH24:MI:SS') > '${dih.last_index_time}'"
deltaImportQuery="select NMSKY,NMSKY,USER_ID,USERNAM,USERRAT from XXXXXX where USER_ID='${dih.delta.USERID}'">
</entity>
</document>
</dataConfig>
基本的配置就是這樣了,如果有不對的地方請指教!