Lucene使用Unicode字符搜索

时间:2010-07-27 19:21:41

标签: java unicode encoding lucene

我索引了一些文本的数据库,数据库文本是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

我该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:2)

这里有两点 -

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

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