【问题标题】:Lucene Search with Unicode Characters使用 Unicode 字符的 Lucene 搜索
【发布时间】:2018-08-25 04:50:50
【问题描述】:

我已经索引了一些文本的数据库,并且数据库文本是 Unicode 编码的。 当我用 Lucene 搜索一个英文单词时,一切正常。但是当我使用像“تو”这样的非英语查询时,它给了我以下异常:

Exception in thread "main" org.apache.lucene.queryParser.ParseException: Cannot parse '??': '*' or '?' not allowed as the first character in WildcardQuery
        at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:187)
        at Search.main(Search.java:151)
Caused by: org.apache.lucene.queryParser.ParseException: '*' or '?' not allowed as first character in WildcardQuery
        at org.apache.lucene.queryParser.QueryParser.getWildcardQuery(QueryParser.java:923)
        at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1347)
        at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1250)
        at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1178)
        at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1167)
        at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:182)
        ... 1 more

我该怎么办?

谢谢。

【问题讨论】:

    标签: java unicode encoding lucene


    【解决方案1】:

    这里有两点-

    • 源文件 (*.java) 的编码类型是什么。确保它是 UTF-8
    • Java 的默认编码可能不是 utf8。确保您指定编码,如:

      InputStreamReader(new FileInputStream(filename), "UTF-8");`

    【讨论】:

    • 好主意,但我之前已经检查过了。这不是问题的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多