2016-08-24 77 views
0

嗨我有一個問題,Lucene搜索不會返回一致的結果。 索引與StandardAnalyzer完成和Lucene版本是數據庫3.0用破折號搜索Lucene不會返回一致的結果

一個示例項是

A1BC-1-12345678 - AU-01/123456 - No.1 ABC DEFG XX-YYY Example Data 

如果我搜索整個字符串,它不會返回任何結果。

如果我參加了一個破折號和斜線,搜索

A1BC-1-12345678 AU-01 123456 No.1 ABC DEFG XX-YYY Example Data 

將不會返回任何結果。

如果我更換空白XX-YYY之間的破折號,搜索

A1BC-1-12345678 AU-01 123456 No.1 ABC DEFG XX YYY Example Data 

--------它返回的結果!------------- ---------

現在,如果我有破折號和斜線,並更換XX-YYY與空格之間的破折號,搜索

A1BC-1-12345678 - AU-01/123456 - No.1 ABC DEFG XX YYY Example Data 

它不會返回任何結果。

最後,如果我取代空格都AU-01,XX-YYY之間的破折號,搜索

A1BC-1-12345678 AU 01 123456 No.1 ABC DEFG XX YYY Example Data 

將不會返回任何結果。

總之,「XX-YYY」無效,但「AU-01」有效,但「XX YYY」有效,「AU 01」無效,所以似乎是什麼問題?

我能做些什麼來解決這個問題?

+0

你在找什麼?這很可能與你的分析有關,但很難說沒有任何細節或代碼是什麼問題。 – femtoRgon

回答

0

我想我已經得到了一個答案,根據Lucene的文檔,該StandardAnalyzer使用StandardTokenizer,它是基於指數:在標點符號

  • 拆分的話,除去標點符號。 但是,沒有被空白後面的點被認爲是令牌的一部分 。
  • 在連字符處拆分單詞,除非 令牌中有一個數字,在這種情況下,整個令牌被解釋爲產品號碼 並且未被拆分。

我認爲帶有小寫過濾器的WhitespaceAnalyzer會適合我的需求。