haystack
haystack 2.5 暫時(shí)支持到solr 4.10 (記筆記當(dāng)時(shí)情況)
solr 4.10 安裝
環(huán)境為ubuntu14.04(和centos安裝軟件命令以及配置文件路徑稍微有點(diǎn)差異)
- 依賴安裝
pip install pysolr
# 7,8都可以姻灶,oracle java 也可以
sudo apt-get install openjdk-8-jre
sudo apt-get install tomcat7 tomcat7-admin
路徑隨意 翔始,一般opt或者usr/share
sudo mkdir /opt/solr-tomcat
#拷貝根目錄 也可以copy multicore文件夾作為根目錄
sudo cp solr-4.10.4/example/solr /opt/solr-tomcat/solr
# 把solr.war文件復(fù)制到tomcat安裝路徑的webapps下,運(yùn)行tomcat會(huì)自動(dòng)解壓這個(gè)war文件粪狼,沒(méi)有的話,改成zip惕稻,手動(dòng)解壓
sudo cp solr-4.10.4/example/webapps/solr.war /usr/share/tomcat7/webapps
- 綁定tomcat webapps
在tomcat的默認(rèn)配置文件夾下建立Catalina/localhost文件夾,并創(chuàng)建solr.xml,ubuntu14.4默認(rèn)配置在/etc/tomcat
solr.xml
<Context docBase="/usr/share/tomcat7/webapps/solr" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/opt/solr-tomcat/multicore" override="true" />
</Context>
- 修改webapps/solr/WEB-INF/web.xml,取消注釋?zhuān)⑶以O(shè)置home目錄
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solr-tomacat/multicore</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
將example/lib/ext下所有的jar拷貝到/usr/share/tomcat7/solr/WEB-INF/lib/
修改文件夾權(quán)限
sudo chown -R tomcat7 /opt/solr-tomcat/multicore
啟動(dòng)solr
sudo service tomcat7 restart
,http://ip:8080/solr 訪問(wèn)增加core
- 直接拷貝example/solr/collection1到multicore目錄蝙叛,并修改權(quán)限
- 編輯solr.xml 添加一個(gè)core的選項(xiàng)
<core name="core2" instanceDir="core2" />
3.重啟tomcat
- 優(yōu)化
提高jvm內(nèi)存限制 編輯
/etc/default/tomcat7
-Xmx128m
to-Xms512m -Xmx1024m
solr管理后臺(tái)增加密碼驗(yàn)證(密碼設(shè)置成功后居然haystack就獲取不到數(shù)據(jù)了俺祠,改用通過(guò)ip限制)
http://blog.csdn.net/ye_qing/article/details/40457237 (solr教程)
- 配置tomcat,修改TOMCAT_HOME\conf\tomcat-users.xml文件,添加用戶和角色
<tomcat-users>
<role rolename="solr"/><!-- 添加的角色名-->
<user username="admin" password="admin" roles="solr"/><!--添加的用戶-->
</tomcat-users>
<pre class="html" name="code"><!--
role屬性說(shuō)明:
rolename:role 角色的名字
user屬性說(shuō)明:
username:user用戶名
password:user的密碼roles:
user所屬角色 如果用戶有多個(gè)角色 各角色直接用“借帘,”分隔蜘渣。如roles="role1,role2"
-->
- 配置solr, 修改TOMCAT_HOME\webapps\ROOT\WEB-INF\web.xml(不一定有)和TOMCAT_HOME\webapps\solr\WEB-INF\web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Lockdown</web-resource-name> <!--描述-->
<url-pattern>/</url-pattern> <!-- 驗(yàn)證的網(wǎng)頁(yè)的位置-->
</web-resource-collection>
<auth-constraint>
<role-name>solr</role-name> <!-- 驗(yàn)證的角色,別寫(xiě)成用戶名肺然,如有多個(gè)角色可以寫(xiě)多個(gè)role-name 標(biāo)簽-->
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method> <!-- 關(guān)鍵-->
<realm-name>Solr</realm-name>
</login-config>
solr指定ip訪問(wèn) /etc/tomcat7/server.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.58.150||localhost||127.0.0.1"/>
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.58.150"/> -->
# 添加以上任意一行蔫缸,注釋掉以下一行
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
中文分詞
IK
- 下載分發(fā)包:https://code.google.com/archive/p/ik-analyzer/downloads (PS:u1分發(fā)包可能有問(wèn)題 未測(cè)試最后的版本,使用鏈接:http://pan.baidu.com/s/1i4qs1Yt 密碼:ix1r 正常际起,)
- 拷貝 IKAnalyzer2012FF_u1.jar 到
webapps/solr/WEB-INF/lib
目錄拾碌,IKAnalyzer.cfg.xml和stopword.dic到webapps/solr/WEB-INF/classes
(無(wú)則新建)目錄。
修改core的schema.xml,添加分詞方法
<!-- IKAnalyzer 中文分詞 -->
<fieldType name="text_ik" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" isMaxWordLength="false" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" isMaxWordLength="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
</analyzer>
</fieldType>
<!-- 引用智能分詞 -->
<fieldType name="smart_ik" class="solr.TextField">
<analyzer >
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" isMaxWordLength="true" /><!-- 智能分詞 -->
</analyzer>
</fieldType>
<!-- 引用最細(xì)粒 -->
<fieldType name="tiny_ik" class="solr.TextField">
<analyzer >
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" isMaxWordLength="false" /><!-- 最細(xì)粒分詞 -->
</analyzer>
</fieldType>
參考和來(lái)源
安裝參考
- http://m.blog.csdn.net/article/details?id=51424873
- http://gagannaidu.blogspot.com/2014/02/apache-solr-461-tomcat7-setup-on-ubuntu.html
- solr 6安裝 http://blog.topspeedsnail.com/archives/5686
分詞參考
IK
- http://m.blog.csdn.net/article/details?id=44594845
- http://blog.csdn.net/gufengshanyin/article/details/21533409
mmseg4j
Haystack more like this
solr
需要添加<requestHandler name="/mlt" class="solr.MoreLikeThisHandler" />
到solrconfig.xml文件街望,路徑在core下
slor 配置
fl: 文檔結(jié)果中應(yīng)返回的FIeld集校翔,默認(rèn)為“*”
df: 默認(rèn)的查詢字段,一般默認(rèn)指定灾前。
qf: query fields,指定solr從哪些field搜索
fq: filter query,過(guò)濾
mm: minimal should match防症。Solr支持三種查詢clause,即“必須出現(xiàn)”, “不能出現(xiàn)”和“可以出現(xiàn)”告希,分別對(duì)應(yīng)于AND, -, OR扑浸。
mlt.fl mlt使用的字段
haystack要索引和mlt的字段好像都只能通過(guò)txt模板定義,其他字段好像是用來(lái)篩選的(未確定)
要索引的字段數(shù)據(jù)庫(kù)存儲(chǔ)必須是各種text格式
mlt必須加上termVectors="true"