【问题标题】:Adding two TokenStream streams together (an ASCIIFoldingFilter case)将两个 TokenStream 流加在一起(ASCIIFoldingFilter 案例)
【发布时间】:2012-09-18 08:45:14
【问题描述】:

我编写了一个使用 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;
    }

}

我知道它充满了不推荐使用的东西,就像现在一样,但我稍后会更正。我现在的问题是,当我应用此分析器时,我能够使用标准拉丁语找到结果,但在搜索原始名称时却不行。

例如:“Munchen”为我带来了与慕尼黑相关的结果,但“München”不再提供。

我假设在我的情况下,ASCIIFoldingFilter 只是覆盖了我的流中的字符,所以问题是如何将两个流加在一起(普通流和折叠拉丁流)

【问题讨论】:

  • 嗨!你能添加库版本和导入吗?

标签: java spring hibernate lucene hibernate-search


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多