com.github.hakenadu.javalangchains.chains.data.writer.WriteDocumentsToLuceneDirectoryChain Maven / Gradle / Ivy
package com.github.hakenadu.javalangchains.chains.data.writer;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import java.util.stream.Stream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MMapDirectory;
import com.github.hakenadu.javalangchains.chains.Chain;
import com.github.hakenadu.javalangchains.util.PromptConstants;
/**
* Stores documents in a lucene {@link Directory}
*/
public class WriteDocumentsToLuceneDirectoryChain implements Chain>, Directory> {
/**
* The directory {@link Path} used to store the created index data
*/
private final Path directoryOutputPath;
/**
* @param directoryOutputPath {@link #directoryOutputPath}
*/
public WriteDocumentsToLuceneDirectoryChain(final Path directoryOutputPath) {
this.directoryOutputPath = directoryOutputPath;
}
/**
* creates a {@link WriteDocumentsToLuceneDirectoryChain} with a default temp
* directory path
*
* @throws IOException on error creating the temp dir
*/
public WriteDocumentsToLuceneDirectoryChain() throws IOException {
this(Files.createTempDirectory("lucene"));
}
@Override
public Directory run(final Stream