2011-12-05 47 views
4

不一致我有這個朵朵領域:Solr的雪球詞幹是西班牙

<fieldtype name="textes" class="solr.TextField"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords-es.txt" enablePositionIncrements="true"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="Spanish" protected="protwords-es.txt"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="Spanish" protected="protwords-es.txt"/> 
    </analyzer> 
</fieldtype> 

搜索查詢alquileres(租金)的預期結果將是alquiler(租金)的匹配。但是,當我去「場分析」中的Solr管理網站,併爲您的alquiler的指標值的alquileres查詢值時,會發生以下情況:

  • 當索引alquiler,它就會變成朵朵alquil
  • 當查詢alquileres時,它被阻止爲alquiler

因此搜索詞(alquileres)的複數形式的簡單情況將不匹配其單數形式(alquiler)。

不應將索引和查詢都歸入相同的詞幹(alquileralquil)?這是算法的侷限性還是我的誤解/錯誤配置? http://wiki.apache.org/solr/Hunspell

回答

1

雪球詞幹是非常有限的......你會使用字典(詞幹的hunspell)獲得更好的結果使用openoffice的hunspell,它的工作非常出色。

我的例子:

URL-Elastic/_analyze?analyzer=es_AR&text=alquileres 

,並返回:

{ 
    tokens: 
    [ 
    { 
     token: "alquiler", 
     start_offset: 0, 
     end_offset: 10, 
     type: "<ALPHANUM>", 
     position: 1 
    } 
    ] 

} 

鏈接:https://www.openoffice.org/download/index.html

+0

不知道這一點。我一定會看看它。謝謝! – Chewie

+1

我試過Hunspell,但它也遭受同樣的故障。 'alquileres'不斷地塞進'alquiler','alquiler'變成'alquil'。我的王國是一個體面的西班牙語詞幹! – Chewie

+0

你可以試試'solr.SpanishLightStemFilterFactory'嗎? –