2014-01-24 62 views
0

如何根據字符串的位置將Solr設置爲更加相關的單詞。例如,如果我搜索「Macbook」,第一個結果就像是「Case Logic LAPS-113 13.3英寸筆記本電腦/ MacBook Air」和「Apple MacBook Pro MD101LL/A 13.3英寸」之後的結果。Solr設置字符串位置的更多相關性

這是我的字段聲明:

<fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 

     <filter class="solr.SynonymFilterFactory" synonyms="lang/index_synonyms.txt" ignoreCase="true" expand="false"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="lang/protwords_pt.txt"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="lang/synonyms.txt" ignoreCase="true" expand="false"/> 
    </analyzer> 

    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 

     <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="lang/protwords_pt.txt"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="lang/synonyms.txt" ignoreCase="true" expand="false"/> 
    </analyzer> 

</fieldType> 

回答

2

如果什麼產品名稱爲「的MacBook /戴爾/聯想筆記本電腦便宜的情況下」,它包含的Macbook在第一個位置,你仍然想提高這個文件呢?

我認爲你應該嘗試解決你的問題的根本原因,而不是如何處理配件(如「案例」,「電池」,「鎖」等)的得分比產品本身更好的共同問題。

顯而易見的最佳選擇:索引一個字段,指出該文檔是否是附件(我收集到您沒有該信息,否則這是最好的方法),並增強那些不是附件的。

如果您沒有該信息,可以嘗試懲罰包含「典型」附件單詞的文檔。爲此,你需要建立這樣一個列表,但並不難。我用這種方法取得了很好的效果。

+0

哇,這是有道理的!謝謝你,我會試試這個!如果知道一些資源,我可以閱讀有關增強和懲罰文檔,我將不勝感激! –

+0

首先看這裏http://wiki.apache.org/solr/SolrRelevancyFAQ – Persimmonium