Лексическая ошибка при использовании lucene 9, но lucene 2 работаетJAVA

Программисты JAVA общаются здесь
Anonymous
Лексическая ошибка при использовании lucene 9, но lucene 2 работает

Сообщение Anonymous »

У меня есть проект, использующий lucene 2, и я пытаюсь выполнить обновление до lucene 9. Следующая простая программа работает в lucene 2.

Код: Выделить всё

public class CustomMultiFieldQueryParser {

private static String[] DefaultQueryFields = new String[]{"name", "category", "jobType"};

public static void main(String[] args) throws ParseException {
String query = "jobType:(1/2 day)";
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(DefaultQueryFields, new StandardAnalyzer());
System.out.println(queryParser.parse(query));
}

}
Но когда я запускаю ту же программу с lucene 9, я получаю лексическую ошибку.

Код: Выделить всё

Exception in thread "main" org.apache.lucene.queryparser.classic.ParseException: Cannot parse 'jobType:(1/2 day)': Lexical error at line 1, column 18.  Encountered:  after prefix "/2 day)" (in lexical state 2)
at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:141)
at CustomMultiFieldQueryParser.main(CustomMultiFieldQueryParser.java:12)
Caused by: org.apache.lucene.queryparser.classic.TokenMgrError: Lexical error at line 1, column 18.  Encountered:  after prefix "/2 day)" (in lexical state 2)
at org.apache.lucene.queryparser.classic.QueryParserTokenManager.getNextToken(QueryParserTokenManager.java:1065)
at org.apache.lucene.queryparser.classic.QueryParser.getToken(QueryParser.java:914)
at org.apache.lucene.queryparser.classic.QueryParser.jj_3R_MultiTerm_383_3_3(QueryParser.java:763)
at org.apache.lucene.queryparser.classic.QueryParser.jj_3_1(QueryParser.java:738)
at org.apache.lucene.queryparser.classic.QueryParser.jj_2_1(QueryParser.java:690)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:232)
at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:371)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:251)
at org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:223)
at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:137)
... 1 more

Process finished with exit code 1
Когда я меняю запрос на +(jobType:(1/2 неполный рабочий день)) -(jobType:(1/4-full)), он снова работает с lucene 2, но с lucene 9 возникает следующая ошибка.

Код: Выделить всё

Exception in thread "main" java.lang.IllegalArgumentException: end-of-string expected at position 11
at org.apache.lucene.util.automaton.RegExp.(RegExp.java:506)
at org.apache.lucene.search.RegexpQuery.(RegexpQuery.java:144)
at org.apache.lucene.queryparser.classic.QueryParserBase.newRegexpQuery(QueryParserBase.java:574)
at org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(QueryParserBase.java:752)
at org.apache.lucene.queryparser.classic.MultiFieldQueryParser.getRegexpQuery(MultiFieldQueryParser.java:272)
at org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:821)
at org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:494)
at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:366)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:312)
at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:371)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:251)
at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:371)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:251)
at org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:223)
at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:137)
at CustomMultiFieldQueryParser.main(CustomMultiFieldQueryParser.java:13)
Может ли кто-нибудь помочь?

Подробнее здесь: https://stackoverflow.com/questions/785 ... ne-2-works

Вернуться в «JAVA»