使用分析器PathHierarchyTokenizer查询字段时,Solr中出现“无效编号”错误

时间:2019-03-01 15:54:23

标签: solr

使用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

我收到一条消息"invalid number: AI"

的SolrException

如果我使用原始过滤器查询,它似乎可以工作:

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)

奇怪的是,我们在其他情况下使用此字段类型定义没有错误,唯一的区别是在这些情况下,我们使用了不同的定界符(“ |”)。

这是预期的行为吗?

0 个答案:

没有答案