With TermQuery and PhraseQuery my SerbianAnalyzer gets called but not with FuzzyQuery. I tried using lucene 4 and lucene 7 both with same behavior. I have following code:
Query query;
String field = "text";
String value = "дањ";
QueryParser queryParser = new QueryParser(field, new SerbianAnalyzer());
System.out.println("\nTermQuery");
query = new TermQuery(new Term(field, value));
System.out.println("Query (preParse): " + (TermQuery)query);
System.out.println("Query.toString(field1): " + ((TermQuery)query).toString(field));
System.out.println("Query (afterParse): " + queryParser.parse(((TermQuery)query).toString(field)));
System.out.println("\nPhraseQuery");
String[] terms = value.split(" ");
query = new PhraseQuery(field, terms);
System.out.println("Query (preParse): " + ((PhraseQuery)query));
System.out.println("Query.toString(field1): " + ((PhraseQuery)query).toString(field));
System.out.println("Query (afterParse): " + queryParser.parse(((PhraseQuery)query).toString(field)));
System.out.println("\nFuzzyQuery");
query = new FuzzyQuery(new Term(field, value), 1);
System.out.println("Query (preParse): " + ((FuzzyQuery)query));
System.out.println("Query.toString(field1): " + ((FuzzyQuery)query).toString(field));
System.out.println("Query (afterParse): " + queryParser.parse(((FuzzyQuery)query).toString(field)));
Result I'm getting is:
TermQuery Query (preParse): text:дањ
Query.toString(field): дањ
Query (afterParse): text:danj
PhraseQuery Query (preParse): text:"дањ"
Query.toString(field): "дањ"
Query (afterParse): text:danj
FuzzyQuery Query (preParse): text:дањ~1
Query.toString(field): дањ~1
Query (afterParse): text:дањ~1