Ошибка «Неверное число» в Solr при запросе поля с помощью анализатора PathHierarchyTokenizer - PullRequest
0 голосов
/ 01 марта 2019

Используя Solr 6.6.4, у меня есть схема, которая использует solr.TextField с анализатором, который содержит этот токенайзер: solr.PathHierarchyTokenizerFactory

    <fieldType name="filepath_string" class="solr.TextField">
      <analyzer>
        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
      </analyzer>
    </fieldType>
   <field name="filepath" type="filepath_string" omitNorms="true" indexed="true" stored="true" required="false" multiValued="false"/>


Когда я запрашиваю это поле стандартным запросом фильтра:

http://192.168.0.200:8983/solr/groundtruth/select?fq=filepath:/files/AI&indent=on&q=*:*&wt=json

Я получаю SolrException с сообщением "invalid number: AI"

Если я использую запрос необработанного фильтра, он работает:

http://192.168.0.200:8983/solr/groundtruth/select?fq={!raw f=filepath}/files/AI&indent=on&q=*:*&rows=0&wt=json

Вот вершинатрассировки стека при сбое:

org.apache.solr.common.SolrException: Invalid Number: AI
    at org.apache.solr.schema.TrieField.readableToIndexed(TrieField.java:455)
    at org.apache.solr.schema.FieldType.getFieldQuery(FieldType.java:776)
    at org.apache.solr.schema.TrieField.getFieldQuery(TrieField.java:414)
    at org.apache.solr.parser.SolrQueryParserBase.rawToNormal(SolrQueryParserBase.java:906)
    at org.apache.solr.parser.SolrQueryParserBase.getBooleanQuery(SolrQueryParserBase.java:595)
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:237)
    at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:130)
    at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:211)
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:53)
    at org.apache.solr.search.QParser.getQuery(QParser.java:168)
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:208)

Как ни странно, мы использовали это определение типа поля в других сценариях без ошибок, с той лишь разницей, что в этих сценариях мы используем другой разделитель ("|").

Это ожидаемое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...