你好,我正在Lucene上工作,以索引我的数据库记录,但我无法解决这个错误。
错误:
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 = "jjdbc: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));***
try{
//index writer
Class.forName(JDBC_DRIVER).newInstance();
Connection conn = DriverManager.getConnection(CONNECTION_URL);
StandardAnalyzer analyzer = new StandardAnalyzer();
IndexWriterConfig Config = new IndexWriterConfig(analyzer);
IndexWriter indexWriter = new IndexWriter(indexDir, Config);
System.out.println("Indexing to directory '" + indexDir + "'...");
int indexedDocumentCount = indexer.indexDocs1(indexWriter, conn);
indexWriter.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()) {
String FTID = resultSet.getString("FTID"); //!= null ? resultSet.getString("FTID"): " ";
String ID = resultSet.getString("ID")!= null ? resultSet.getString("ID"): " ";
String CLASSID = resultSet.getString("CLASSID")!= null ? resultSet.getString("CLASSID"): " ";
String TEXT = resultSet.getString("TEXT")!= null ? resultSet.getString("TEXT"): " ";
String PUBNOTICECONTENT = resultSet.getString("PUBNOTICECONTENT")!= null ? resultSet.getString("PUBNOTICECONTENT"): " ";
String DOCUMENTCONTENT = resultSet.getString("DOCUMENTCONTENT")!= null ? resultSet.getString("DOCUMENTCONTENT"): " ";
String contentSum_DE = resultSet.getString("contentSum_DE")!= null ? resultSet.getString("contentSum_DE"): " ";
Document d = new Document();
d.add(new Field("FTID", rs.getString("FTID"), Field.Store.YES, Field.Index.NOT_ANALYZED));
d.add(new Field("ID", rs.getString("ID"), Field.Store.YES, Field.Index.NOT_ANALYZED ));
d.add(new Field("CLASSID", rs.getString("CLASSID"), Field.Store.YES, Field.Index.ANALYZED));
if (writer.getConfig().getOpenMode() == OpenMode.CREATE) {
// New index, so we just add the document (no old document can be there):
System.out.println("adding " + FTID + " ---- " + ID + "---- " + CLASSID);
writer.addDocument(doc);
}
}
} catch (Exception e) {
System.out.println(e);
}
错误清楚地表明Lucenetest无法编译。原因是FSDirectory需要java.nio.file.path
,但接收到不兼容的java.io.file
。
看起来代码是为早期版本的Lucene开发的,该版本接受文件https://Lucene.apache.org/core/3_0_3/api/core/org/apache/Lucene/store/fsdirectory.html。最近的Lucene版本期望路径https://Lucene.apache.org/core/5_3_0/core/index.html?org/apache/Lucene/store/fsdirectory.html。
解决方案是将带有错误的行更改为
Directory indexDir = FSDirectory.open(new File(PATH).toPath());
错误页面截图。选择的文本就是错误。
我在线程“main”java中遇到异常。错误:未解析编译。 我做错了什么? 线程“main”中出现异常: java.lang.错误:未解决的编译问题: 对于类型在
我从GitHub克隆了我的项目,现在我无法运行我的项目。 我收到以下错误: 知道是什么导致了这个错误吗? 编辑 我检查了这个问题Intellij在我发布到这里之前突然抛出ClassNotFoundException,它没有给我任何解决方案...为什么要将我的问题标记为重复,因为那个问题不能解决我的问题?
我得到了这个错误: 线程“main”Java.lang.NosuchFielderRror:calificacion.main处的num1异常(problema_3.Java:17) 在这个简单的终端Java程序上键入第一个值后: 另一方面,这一个运行良好,我使用相同的输入法在这两个: 提前道谢。
当我从nextInt()获取输入时,扫描器会抛出异常,但是如果我从nextLine()获取输入,然后将其解析为int,那么我的代码会正常运行。 如果可以将字符串输入解析为任何类型,为什么还要使用nextInt()或nextDouble()。
每当我运行这个函数时,函数与.nextint()中的