0
在Hibernate Search 5.3上,我一直在嘗試構建一個適合對通過Hibernate Search索引的許多字段進行排序的分析器。我明白,對於排序不應該分析字段,但只要你的分析儀返回一個單一的令牌,我相信這是沒有問題的,再加上你可以使用一些預先構建的過濾器來區分大小寫,HTML剝離,並在我的情況,我也想按照前20個字符排序。用於排序的Hibernate搜索分析器
所以,像這樣的事情似乎會起作用。
@AnalyzerDef(name = "sortAnalyzer",
tokenizer = @TokenizerDef(factory = KeywordTokenizerFactory.class) ,
charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) },
filters =
{
@TokenFilterDef(
factory = EdgeNGramFilterFactory.class,
params = {
@Parameter(name = "minGramSize",value = "20"),
@Parameter(name = "maxGramSize",value = "20")
}
),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = TrimFilterFactory.class)
}
),
但它只適用於刪除EdgeNGramFilterFactory。我想我可以做一個橋樑來做子串。然後再次,我可以使用橋來完成整個事情並設置Analyze.NO。我的問題是建議什麼?橋樑與分析儀有什麼優勢?
而我試圖使用的分析儀的任何原因不起作用?
感謝@Sanne - 我覺得我的想法是濫用'EdgeNGramFilterFactory'作爲一個子字符串,因爲我告訴了只給我20度字符的最小值和最大值,就只有一個可能的令牌從左邊開始工作,這將是前20個字符。但是,無論如何,我已經決定搭橋去做子串,然後用分析器去做其餘的事情。 – winklebort