我遇到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);
它expectedky返回所有文件。但是当我尝试
时 String querystr = "Müller~0.1"
或
String querystr = "Mueller~0.1"
它不会返回任何内容。我不知道我是否遗漏了某些东西,或者它是否是一个错误。我不认为编码是问题所在,因为在搜索“Mueller”时,只有正常的字符在使用中。任何评论表示赞赏。
答案 0 :(得分: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;
}