Django筆記(五)搜索 django-haystack + solr中文分詞配置

haystack

haystack 2.5 暫時(shí)支持到solr 4.10 (記筆記當(dāng)時(shí)情況

solr 4.10 安裝

環(huán)境為ubuntu14.04(和centos安裝軟件命令以及配置文件路徑稍微有點(diǎn)差異)

  1. 依賴安裝
pip install pysolr
# 7,8都可以姻灶,oracle java 也可以
sudo apt-get install openjdk-8-jre 
sudo apt-get install tomcat7 tomcat7-admin
  1. 去官方下載歷史包 http://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz
  2. 安裝solr
路徑隨意 翔始,一般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
  1. 綁定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>
  1. 修改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>
  1. 將example/lib/ext下所有的jar拷貝到/usr/share/tomcat7/solr/WEB-INF/lib/

  2. 修改文件夾權(quán)限
    sudo chown -R tomcat7 /opt/solr-tomcat/multicore

  3. 啟動(dòng)solr sudo service tomcat7 restart ,http://ip:8080/solr 訪問(wèn)

  4. 增加core

  1. 直接拷貝example/solr/collection1到multicore目錄蝙叛,并修改權(quán)限
  2. 編輯solr.xml 添加一個(gè)core的選項(xiàng)
    <core name="core2" instanceDir="core2" />
    3.重啟tomcat
  1. 優(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教程)

  1. 配置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"
-->
  1. 配置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

  1. 下載分發(fā)包:https://code.google.com/archive/p/ik-analyzer/downloads (PS:u1分發(fā)包可能有問(wèn)題 未測(cè)試最后的版本,使用鏈接:http://pan.baidu.com/s/1i4qs1Yt 密碼:ix1r 正常际起,)
  2. 拷貝 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)源

安裝參考

分詞參考

IK

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"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末燕偶,一起剝皮案震驚了整個(gè)濱河市喝噪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌指么,老刑警劉巖酝惧,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伯诬,居然都是意外死亡晚唇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)盗似,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哩陕,“玉大人,你說(shuō)我怎么就攤上這事赫舒『芳埃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵接癌,是天一觀的道長(zhǎng)心赶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缺猛,這世上最難降的妖魔是什么缨叫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荔燎,結(jié)果婚禮上耻姥,老公的妹妹穿的比我還像新娘。我一直安慰自己湖雹,他們只是感情好咏闪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著摔吏,像睡著了一般鸽嫂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上征讲,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天据某,我揣著相機(jī)與錄音,去河邊找鬼诗箍。 笑死癣籽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筷狼,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓶籽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了埂材?” 一聲冷哼從身側(cè)響起塑顺,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俏险,沒(méi)想到半個(gè)月后严拒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竖独,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年裤唠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莹痢。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡种蘸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竞膳,到底是詐尸還是另有隱情劈彪,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布顶猜,位于F島的核電站,受9級(jí)特大地震影響痘括,放射性物質(zhì)發(fā)生泄漏长窄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一纲菌、第九天 我趴在偏房一處隱蔽的房頂上張望挠日。 院中可真熱鬧,春花似錦翰舌、人聲如沸嚣潜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)懂算。三九已至,卻和暖如春庇麦,著一層夾襖步出監(jiān)牢的瞬間计技,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工山橄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垮媒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像睡雇,于是被迫代替她去往敵國(guó)和親萌衬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 準(zhǔn)備工作及相關(guān)介紹 solr和lucene的版本是同步更新的它抱,最新版本是6.5.0秕豫。本案例使用4.10.3 j...
    阿太哥閱讀 2,324評(píng)論 1 5
  • =========================================================...
    lavor閱讀 3,484評(píng)論 0 5
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)抗愁,斷路器馁蒂,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • solr環(huán)境搭建 下載solr6.2和配置jdk,tomcat略過(guò) 說(shuō)明:solr_home:用來(lái)放corecor...
    小小機(jī)器人閱讀 669評(píng)論 1 2