package lucene;
import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.lucene.analysis.core.SimpleAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.DateTools.Resolution;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Lucenetest {
//database connection
public static final String PATH = "C:/dbindex/index.txt";
private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String CONNECTION_URL = "jdbc:sqlserver://WMDENTW1\\SQLEXPRESS:1433;" +
"database=FullTextDB;" +
"user=root;" +
"password=root123";
private static final String QUERY = "select FTID, ID, CLASSID, TEXT, PUBNOTICECONTENT, DOCUMENTCONTENT, contentSum_DE from METADATA_FULLTEXT";
public static void main(String[] args) throws Exception {
Lucenetest indexer = new Lucenetest();
//error here
***Directory indexDir = FSDirectory.open(new File(PATH).toPath());***
try {
// Index Writer
Class . forName (JDBC_DRIVER). newInstance();
Connection conn = DriverManager.getConnection(CONNECTION_URL);
StandardAnalyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig (analyzer);
IndexWriter index writer = new IndexWriter (indexDir , config);
System.out.println("Indexing to directory '" + indexDir + "'...");
int indexedDocumentCount = indexer.indexDocs1(indexWriter, conn);
index writer . close();
System.out.println(indexedDocumentCount + " records have been indexed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("deprecation")
int indexDocs1(IndexWriter writer, Connection conn) throws Exception {
String sql = QUERY;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
int i=0;
while (rs.next()) {
Document d = new Document();
d.add(new StringField("FTID", rs.getString("FTID"), StringField.Store.YES));
d.add(new StringField("ID", rs.getString("ID"), StringField.Store.YES));
d.add(new StringField("CLASSID", rs.getString("CLASSID"), StringField.Store.YES));
d.add(new StringField("TEXT", rs.getString("TEXT"), StringField.Store.YES));
d.add(new StringField("PUBNOTICECONTENT", rs.getString("PUBNOTICECONTENT"), StringField.Store.YES));
d.add(new StringField("DOCUMENTCONTENT", rs.getString("DOCUMENTCONTENT"), StringField.Store.YES));
d.add(new StringField("contentSum_DE", rs.getString("contentSum_DE"), StringField.Store.YES));
writer.addDocument(d);
i++;
}
return i;
}
private static void indexDocs(IndexWriter writer, Connection conn) {
// TODO Auto-generated method stub
}
}
nullにすることはできません、私はディレクトリに索引付け、例外を取得しています:のLucene errror:インデックスディレクトリに 'C:/インデックス' ... 1234 java.lang.IllegalArgumentExceptionがを追加:値は1002ミリ秒総
MMapDirectory @ C:\ dbindex [email protected]' ...
java.lang.IllegalArgumentExceptionが:値が
org.apache.lucene.document.Fieldでnullにすることはできません。 (Field.java:238)at
org.apache.lucene.document.StringField。(StringField.java:6 1)
lucene.Lucenetest.main(Lucenetest.java:56)
ない私は逃したものを実際に確実で
lucene.Lucenetest.indexDocs1(Lucenetest.java:80)で。
私は例外、 インデックスディレクトリに 'MMapDirectoryする@ C:\ dbindex [email protected]' としてエラーを取得しています... java.lang.IllegalArgumentExceptionが:値は nullにすることはできませんorg.apache.lucene.document.Fieldの\t。(Field.java:238) \t(org.apache.lucene.document.StringField) (StringField.java:61) \t、lucene.Lucenetest.indexDocs1(Lucenetest.java:80) \t lucene.Lucenetest.main(Lucenetest.java:56)............ ... 私が逃したものは分かりません –