Java Lucene编码

Java Lucene编码,java,utf-8,lucene,Java,Utf 8,Lucene,我对Lucene(java)编码有疑问 如何使用Lucene进行编码?哪个是默认值?我如何设置它 或者Lucene不在乎它编码的是什么,只在乎如何在索引阶段向文档(下面是java代码)添加字符串,然后在索引中搜索 换句话说,我不得不担心输入文本是否为UTF-8,查询是否也为UTF-8 Document doc = new Document (); doc.add (new TextField (tagName, object.getName () Field.Store.YES)); 感谢

我对Lucene(java)编码有疑问

如何使用Lucene进行编码?哪个是默认值?我如何设置它

或者Lucene不在乎它编码的是什么,只在乎如何在索引阶段向文档(下面是java代码)添加字符串,然后在索引中搜索

换句话说,我不得不担心输入文本是否为UTF-8,查询是否也为UTF-8

Document doc = new Document ();  
doc.add (new TextField (tagName, object.getName () Field.Store.YES));

感谢您的帮助

Lucene将术语存储在UTF-8中。(参见Lucene的BytesRef类) Java在内部将所有内容存储在UTF-16中。(Java的字符串是UTF-16)。因此,Lucene的BytesRef提供了一个构造函数,它将UTF16转换为UTF8。因此,Java的字符串可以毫无问题地使用

例如,您在代码中使用的TextField使用字符串作为字段值。 如果有其他类型的字段采用字节[],则需要确保它们是UTF8字节

在查询时,Lucene将始终为您提供UTF-8字节,但是您可以通过同一类中提供的方法将其转换为Java的字符串。您始终可以在其他字符集中解释这些字节


您必须自己处理字符编码-只要您能够在Java的字符串中正确地获得字符,就应该可以了。例如:如果要索引的数据来自具有diff-char集的XML或从diff-char集中的DB读取。您必须确保能够在用于索引的JVM中正确读取这些数据源。

Lucene将术语存储在UTF-8中。(参见Lucene的BytesRef类) Java在内部将所有内容存储在UTF-16中。(Java的字符串是UTF-16)。因此,Lucene的BytesRef提供了一个构造函数,它将UTF16转换为UTF8。因此,Java的字符串可以毫无问题地使用

例如,您在代码中使用的TextField使用字符串作为字段值。 如果有其他类型的字段采用字节[],则需要确保它们是UTF8字节

在查询时,Lucene将始终为您提供UTF-8字节,但是您可以通过同一类中提供的方法将其转换为Java的字符串。您始终可以在其他字符集中解释这些字节

您必须自己处理字符编码-只要您能够在Java的字符串中正确地获得字符,就应该可以了。例如:如果要索引的数据来自具有diff-char集的XML或从diff-char集中的DB读取。您必须确保能够在用于索引的JVM中正确读取这些数据源