一起添加两个TokenStream流(一个ASCIIFoldingFilter案例)

时间:2012-09-18 08:45:14

标签: java spring hibernate lucene hibernate-search

我编写了一个使用ASCIIFoldingFilter的自定义分析器,以便将位置名称中的扩展拉丁语集缩减为常规拉丁语。

public class LocationNameAnalyzer extends Analyzer    {

    @Override
    public TokenStream tokenStream(String arg0, Reader reader) {

        //TokenStream result = new WhitespaceTokenizer(Version.LUCENE_36, reader);
        StandardTokenizer tokenStream = new StandardTokenizer(Version.LUCENE_36, reader);

        TokenStream result = new StandardFilter(tokenStream);
        result = new LowerCaseFilter(result);

        result = new ASCIIFoldingFilter(result);


        return result;
    }

}

我知道它现在充满了被弃用的东西,但我稍后会纠正。我现在的问题是,当我应用这个分析器时,我能够使用标准拉丁语找到结果,但是在搜索原始名称时却找不到。

例如:“慕尼黑”给我带来了与慕尼黑有关的结果,但“慕尼黑”已不复存在。

我认为在我的情况下,ASCIIFoldingFilter只是覆盖了我的流中的字符,所以问题是如何将两个流一起添加(正常的和折叠的拉丁语)

1 个答案:

答案 0 :(得分:2)

您应该在分析器和搜索器上使用过滤器,这样用于搜索的标记将与存储在索引上的标记相同。