2016-12-03 22 views
0

我在引擎蓋下使用了Solr 5.5.2和Lucene 5.5.2。如何在Lucene/Solr中正確實現我的自定義標記器?

我想要做的是創建我的自定義標記,它通過斜線符號劃分文本。

下面是代碼示例:

public class SlashSymbolTokenizer extends CharTokenizer { 

public SlashSymbolTokenizer() { 
} 

public SlashSymbolTokenizer(AttributeFactory factory) { 
    super(factory); 
} 

@Override 
protected boolean isTokenChar(int c) { 
    return c != 47 && c != 92; 
} 
} 

schema.xml中

<fieldType name="string_with_slash_tokenizer" class="solr.TextField" sortMissingLast="true"> 
<analyzer> 
    <tokenizer class="tokenizer.SlashSymbolTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

並在索引時間進行現場"color":"Black/white"應用此標記生成後,我認爲我可以通過查詢進一步的東西與之匹配如"color":"black white",但它不起作用..該字段僅匹配初始值"Black/white"

什麼是錯的機智我的實施?你有什麼想法 ?

非常感謝!

+0

如果搜索'顏色會發生什麼:?Black' – root545

+0

@ root545,我得到了它後,我的分詞器已經應用於我!可以通過「黑色」或「白色」標記匹配文檔,但不能同時使用空格而不是斜槓。 – MadCat45

回答

1

由於您的標記生成器上標記化/,「黑白色」的查詢將是一個令牌與內容black white。因爲該令牌不符合blackwhite,所以找不到匹配項。

如果要在空格和/上標記化,可以在自己的代碼中處理它,也可以使用類似於WordDelimiterFilter的東西。你也可以使用一個WhitespaceTokenizer和使用自定義分隔符列表WordDelimiterFilter通過/分裂,或者您可以使用PatternTokenizer提供自己的一組正則表達式的(例如使用兩種/和空白。

到文本拆分

使用分析頁面的Solr管理下才能看到你的領域究竟是如何處理和記號化

相關問題