Как прочитать многозначное строковое поле в пользовательском запросе функции solr? - PullRequest
0 голосов
/ 04 января 2019

Я пишу пользовательский запрос функции solr для многозначного строкового поля в solr.Ниже приведен мой код:

    import org.apache.solr.common.util.NamedList;
    import org.apache.solr.search.ValueSourceParser;
    import org.apache.solr.search.FunctionQParser;
    import org.apache.solr.search.SyntaxError;
    import java.util.HashSet;

    import org.apache.lucene.queries.function.ValueSource;


    public class sortOnXSourceParser extends ValueSourceParser {
        public void init(NamedList namedList) {
        }

        public ValueSource parse(FunctionQParser fqp) throws SyntaxError {
            ValueSource source = fqp.parseValueSource();
            HashSet<Integer> topic_ids = new HashSet<Integer>();
            while(fqp.hasMoreArguments()){
                topic_ids.add(fqp.parseInt());
            }
            return new sortOnXSource(source, topic_ids);
        }
    }

Мой код компилируется нормально, и когда вызывается эта функция, он выдает ошибку в

ValueSource source = fqp.parseValueSource();

Эта функция вызывается для сортировки документов.основанный на многозначном поле с именем x с этим синтаксисом

sortOnX(x, 309043) desc

и исключение, которое отображается в журналах solr:

    2019-01-04 06:32:01.972 ERROR (qtp1573605215-22) [   x:emr-20181210] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: Can't determine a Sort Order (asc or desc) in sort spec 'sortOnX(x, 309043) desc', pos=28
    at org.apache.solr.search.SortSpecParsing.parseSortSpecImpl(SortSpecParsing.java:173)
    at org.apache.solr.search.SortSpecParsing.parseSortSpec(SortSpecParsing.java:60)
    at org.apache.solr.search.QParser.getSortSpec(QParser.java:280)

Эта часть кода работала нормально, когда поле было многозначным = falseно недавно нам пришлось внести изменения и сделать это поле многозначным = истинным. Мы хотим получить доступ к многозначному строковому полю в пользовательской функции, запрашивающей код Java.

My solr version is: 7.5.0
Lucene Version is: 7.5.0
Java version : 11.0.1 JVM 18.9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...