2017-08-16 64 views
0

我已經安裝了一個django-oscar項目並按照documentation啓用了solr 4.7.2。使用solr在django-oscar中搜索建議

Solr似乎工作正常。測試建議 'exxample'(本地主機:8983/Solr的/ collection1 /法術spellcheck.q = exxample &拼寫檢查=真>?)我得到:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">10</int> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
    <lst name="spellcheck"> 
     <lst name="suggestions"> 
      <lst name="exxampl"> 
       <int name="numFound">1</int> 
       <int name="startOffset">0</int> 
       <int name="endOffset">8</int> 
       <int name="origFreq">0</int> 
       <arr name="suggestion"> 
       <lst> 
        <str name="word">exampl</str> 
        <int name="freq">2</int> 
       </lst> 
       </arr> 
      </lst> 
      <bool name="correctlySpelled">false</bool> 
      <lst name="collation"> 
       <str name="collationQuery">exampl</str> 
       <int name="hits">2</int> 
       <lst name="misspellingsAndCorrections"> 
        <str name="exxampl">exampl</str> 
       </lst> 
      </lst> 
     </lst> 
    </lst> 
</response> 

我也能OSCAR_SEARCH_FACETS確保Solr的已被Django-Oscar正確註冊,並且它似乎工作正常。然而,當我在django-oscar中做一個簡單的拼寫錯誤的測試搜索時,我得到0個返回的搜索結果並且沒有任何建議。我不確定接下來要做什麼。

幫助將不勝感激!

回答

1

我已經設法解決這個問題。我將編寫完整的解決方案,在Django-Oscar上設置Solr的拼寫建議,因爲安裝過程需要根據官方文檔中的說明進行調整。這也是我第一次與Solr(或任何搜索引擎)合作,所以不要指望一些專家的指導,只是一個關於如何讓Solr在奧斯卡上運行的指南。

我正在使用Oscar 1.5和Solr 4.7.2(解決方案也適用於4.10.4 ...不確定其他版本)。按照documentations做一切事情 - 請注意,對於版本爲< 1.5的奧斯卡版本,指令略有不同。

一旦您安裝了Solr並運行,您可以測試Solr服務器@ localhost上的查詢:8983/solr/collection1/spell?spellcheck.q = [您的搜索查詢請到這裏;沒有括號] & spellcheck = true>。需要成爲數據庫中的單詞 - 無論是產品描述還是產品標題。

您將得到一個錯誤結果,說分析器需要是相同的類型。通過編輯位於./solr-4.7.2/example/solr/collection1/conf/solrconfig.xml的solrconfig.xml文件來解決這個問題。搜索<str name="field">,並將每個未評論的實例更改爲<str name="field">text</str> - 您也可以將每個實例更改爲<str name="field">title</str>,但這僅限於在標題中找到的單詞。重新啓動Solr服務器。這些更改將消除分析儀錯誤,您的Solr服務器現在將開始顯示結果,但是它們尚未饋送到您的奧斯卡網站。

要解決此問題,您需要對同一個solrconfig.xml文件進行另一次調整。搜索<requestHandler name="/select" class="solr.SearchHandler">,並在該請求處理器的底部包括下面的代碼:

<arr name="last-components"> 
    <str>spellcheck</str> 
</arr> 

重新啓動服務器。現在你在你的奧斯卡網站上有拼寫建議。希望其他人認爲這有幫助。就像我說的 - 這是我第一次使用Solr。如果有人在奧斯卡上添加或擴展Solr功能,那就太好了。

+0

它幫助我,因爲我使用Solr進行搜索,我想添加它就像它提供了一個詞的搜索,然後它表明你的意思是這樣,所以我們可以做到這一點,而不是暗示你的意思點擊以直接搜索結果 –