2012-01-31 19 views
8

我正在使用solr,在localhost上設置:8983 我基本上使用了開箱即用的示例。 我輸入了一個名稱爲「Car」的文檔,另一個名稱爲「Cars」。如果在文檔中使用複數形式,並且在搜索文本中使用單數形式,請配置SOLR以查找文檔?

如果我遊之一:

http://localhost:8983/solr/select?q=Car 

http://localhost:8983/solr/select?q=Cars 

我希望得到這兩份文件。目前,我沒有。

在 「schema.xml中」 的字段標籤,在 「名稱」 的條目是:

「text_general」 具有以下 「分析」(不詞幹):

<analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 

我試圖給每個分析器添加一個stemmer。我試過了:

<filter class="solr.PorterStemFilterFactory"/> 
<filter class="solr.KStemFilterFactory"/> 
<filter class="solr.EnglishMinimalStemFilterFactory"/> 

這樣做使得搜索「汽車」會找到「汽車」,但我永遠找不到「汽車」。

應該有可能找到「汽車」?

任何幫助將不勝感激。謝謝。

回答

16

這是可能的,只是在年底(後LowerCaseFilterFactory)添加搬運工過濾器:

<filter class="solr.SnowballPorterFilterFactory" language="English" /> 

瞭解更多:

  1. Snowball docs with example of use in analyser
  2. Solr LanguageAnalysis
  3. The English (Porter2) stemming algorithm

如果沒有特別需要,我不會將分析器劃分爲索引和查詢時間。您的查詢時間分析器看起來非常適合在兩種情況下使用它。

+0

嘿,這似乎工作的關心。現在,我昨天嘗試的stemmers也是如此。我正在重新啓動solr應用程序(在tomcat上運行),它似乎確實有一些效果(即無論我做了什麼,我都找不到「Cars」),但我猜想有些東西被緩存了。我會聽取您關於分析儀部門的建議。謝謝。 – zod 2012-02-01 10:10:02

+0

@Fuxi你的第一個鏈接已經死了,也是第三個 – AntonioCS 2017-08-21 08:39:47

+0

@AntonioCS我更新了第一個鏈接,第二個和我的作品對我來說 – Fuxi 2017-08-21 11:16:38

1

我發現,從text_general改變在shema.xml領域text_en把這個問題多

+1

您是指到Solr中的示例性模式?在版本中,我檢查它也使用詞幹,PorterStemFilterFactory是確切的 – Fuxi 2013-06-21 22:15:54

相關問題