|
|
@@ -25,10 +25,14 @@ public class CustomWordSplitter extends TextSplitter {
|
|
|
|
|
|
/**
|
|
|
* 对文本进行分片处理(指定块大小和重叠大小)
|
|
|
+ * 1. 空文本检查:如果输入文本为空或空白,则返回空列表
|
|
|
+ * 2. 小文本处理:如果文本长度小于 chunkSize,直接作为一个块返回
|
|
|
+ * 3. 段落分割:按换行符 \n 将文本分割成段落数组
|
|
|
*
|
|
|
* @param text 待分片的文本
|
|
|
- * @param chunkSize 块大小
|
|
|
- * @param overlap 重叠大小
|
|
|
+ * @param chunkSize 每个文本块的最大字符长度,控制分片后每个文本段的大小(默认 1000)
|
|
|
+ * @param overlap 代表相邻文本块之间的重叠字符数,用于确保语义连续性
|
|
|
+ * 避免重要信息在切分点处被割裂(默认 200)
|
|
|
* @return 分片后的文本列表
|
|
|
*/
|
|
|
public List<String> splitText(String text, int chunkSize, int overlap) {
|
|
|
@@ -54,7 +58,7 @@ public class CustomWordSplitter extends TextSplitter {
|
|
|
|
|
|
for (String paragraph : paragraphs) {
|
|
|
// 如果当前块加上新段落超过限制,且当前块不为空
|
|
|
- if (currentChunk.length() + paragraph.length() > chunkSize && currentChunk.length() > 0) {
|
|
|
+ if (currentChunk.length() + paragraph.length() > chunkSize && !currentChunk.isEmpty()) {
|
|
|
// 保存当前块
|
|
|
chunks.add(currentChunk.toString().trim());
|
|
|
|
|
|
@@ -68,14 +72,14 @@ public class CustomWordSplitter extends TextSplitter {
|
|
|
}
|
|
|
|
|
|
// 添加段落到当前块
|
|
|
- if (currentChunk.length() > 0) {
|
|
|
+ if (!currentChunk.isEmpty()) {
|
|
|
currentChunk.append("\n");
|
|
|
}
|
|
|
currentChunk.append(paragraph);
|
|
|
}
|
|
|
|
|
|
// 添加最后一个块
|
|
|
- if (currentChunk.length() > 0) {
|
|
|
+ if (!currentChunk.isEmpty()) {
|
|
|
chunks.add(currentChunk.toString().trim());
|
|
|
}
|
|
|
|