我正在尝试一个项目的Lucene索引搜索器。
索引的文档内容有拉丁语(ISO-8859-1)字符,因此用户可以(也将)使用此字符集进行搜索。
据我所知,Lucene使用UTF-8生成索引文件。
问题:
1)在使用Lucene进行搜索时,有没有办法指定字符集?或者我是否必须手动将查询转换为UTF-8然后运行搜索?
2) IndexSearcher.search()方法不会忽略空格,所以我必须猜测“令牌”才能显示任何有意义的结果。如果用户忘记在搜索的术语上添加空格,则不会显示任何结果。有没有办法配置搜索器(或QueryParser)忽略空格?
答案 0 :(得分:0)
不太清楚你到底遇到麻烦的确切位置。我认为你正在读取用户输入字符串,所以我不知道问题出在哪里。提供您的代码可能会澄清这一点。如果您确实是从用户输入读取字节数组,那么是的,转换是必要的。然而,将byte []转换为String并不是一个费力的过程。只需使用String ctor。
如果您拥有passed it分析器,QueryParser会在空白处进行标记。 StandardAnalyzer
将是典型的选择。