0

我对 GermanAnalyzer 有疑问。我只需要它来搜索名称。假设我的表格中有文档 {"Muller","Mueller","Müller"}。现在如果我使用

    Analyzer analyzer = new GermanAnalyzer(Version.LUCENE_43);
    String querystr = "Muller~0.1"
    Query q = new QueryParser(Version.LUCENE_43, "Name", analyzer).parse(querystr);

它期望返回所有文件。但是当我尝试

    String querystr = "Müller~0.1"

或者

    String querystr = "Mueller~0.1"

它不返回任何东西。我不知道我是否遗漏了什么,或者它是否是一个错误。我认为编码不是问题,因为在搜索“Mueller”时,只使用了普通字符。任何评论表示赞赏。

4

1 回答 1

0

我通过使用GermanNormalizationFilter(String string).

    public static List<String> tokenizeString(String string) throws IOException {
        List<String> result = new ArrayList<String>();
        Tokenizer source = new StandardTokenizer(version, new StringReader(string));
        TokenStream stream = new StandardFilter(version, source);
        stream = new GermanNormalizationFilter(stream);
        CharTermAttribute cattr = stream.addAttribute(CharTermAttribute.class);
        stream.reset();
        while (stream.incrementToken()) {
            result.add(cattr.toString());
        }
        return result;
    }
于 2013-06-18T15:05:11.453 回答