gpt4 book ai didi

java - Lucene编码、java

转载 作者:行者123 更新时间:2023-12-01 18:33:37 25 4
gpt4 key购买 nike

我对 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的String可以毫无问题地使用。

例如,您在代码中使用的 TextField 使用 String 作为 Field 值。如果您有其他类型的字段需要 byte[],那么您需要确保它们是 UTF8 字节。

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

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

关于java - Lucene编码、java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com