2016-11-06 50 views
0

Solr的是去除搜索查詢的字母「E」 ......Solr的去除ace001搜索詞的「E」

我當涉及到Solr相當新的,所以我真的不知道在哪裏開始尋找摸不着頭腦,但每當我發送一個搜索查詢的Solr被剝離出來的「e」字符...

正如你可以在這裏看到,當我嘗試和搜索術語ace001

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 1, 
    "params": { 
     "q": "_text:ace001", 
     "indent": "true", 
     "wt": "json", 
     "debugQuery": "true", 
     "_": "1478467316690" 
    } 
    }, 
    "response": { 
    "numFound": 0, 
    "start": 0, 
    "docs": [] 
    }, 
    "debug": { 
    "rawquerystring": "_text:ace001", 
    "querystring": "_text:ace001", 
    "parsedquery": "PhraseQuery(_text:\"ac 001 ac 001\")", 
    "parsedquery_toString": "_text:\"ac 001 ac 001\"", 
    "explain": {}, 
    "QParser": "LuceneQParser", 
    "timing": { 
     "time": 1, 
     "prepare": { 
     "time": 1, 
     "query": { 
      "time": 1 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "spellcheck": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     }, 
     "process": { 
     "time": 0, 
     "query": { 
      "time": 0 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "spellcheck": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     } 
    } 
    } 
} 

搜索一個不同的術語,如'acb001'不會去掉'b',但我注意到它確實將麻木分開從信件中刪除。我想Solr的以匹配文本字段的「acb001」一詞......

提取物:

"rawquerystring": "_text:acb001", 
"querystring": "_text:acb001", 
"parsedquery": "PhraseQuery(_text:\"acb 001 acb 001\")", 
"parsedquery_toString": "_text:\"acb 001 acb 001\"", 
"explain": {}, 
"QParser": "LuceneQParser", 

這裏會很感激的一些方向,我怎麼可以進一步調試或理想解決這個問題所以ace001會返回所有這些事件。

編輯:

模式是標準/默認http://pastebin.com/59LbmJUp

+0

你可以發佈你的schema.xml嗎? – root545

+1

我猜測你的分析器涉及到一個WordDelimiterFilter和一個詞幹分析器,所以「ace001」被分成「ace」和「001」,然後「ace」被分類爲「ac」。 – femtoRgon

+0

@femtoRgon我會說你是對的,我只是試圖鍛鍊如何阻止它做到這一點... –

回答

4

這是因爲solr.PorterStemFilterFactory的發生。您的默認搜索字段ID爲htmltext,其中有
<filter class="solr.PorterStemFilterFactory"/>

在查詢分析中。

PorterStemmer將詞「ace」改爲「ac」。 你可以在這裏查看https://tartarus.org/martin/PorterStemmer/voc.txt 搜索單詞「ace」。 現在看這裏已經制止,這將是「交流」

解決這個revmoe

而且你正在使用solrconfig.xml中查詢時過濾器以及索引後所產生https://tartarus.org/martin/PorterStemmer/output.txt相應的字後,對應的輸出WordDelimiterFilterFactory,它將字母分割在字母數字上。這就是爲什麼你看到「ac」和「001」,如果你不想那麼在schema.xml中刪除那個過濾器

你正在使用默認的schema.xml,它有很多這些不必要的過濾器,你可能甚至不需要。我建議將它分解爲幾個過濾器。然後根據需要添加過濾器而不是其他方式。

+0

感謝您的迴應,我已經從schema.xml中刪除了所有PorterStemFilterFactory的痕跡,我本人在solrconfig.xml中找不到任何東西,但我仍然得到完全相同的結果; –

+0

你重新加載了核心嗎? – root545

+0

@Peavers是否解決了你的問題? – root545