1
私は過去数日からJavaでLucene 6.2.0を使用し、タグを含む.textextファイルを解析しようとしました。私は、タグを解析するために適切なパーサを使用したと信じていますが、Cannot instantiate the type Document
という新しいLuceneドキュメントを作成している間、この奇妙なエラーに遭遇しました。私は親切に誰かが私にこれを手伝ってくれるようお願いします。私はこれに関してインターネット上で何の提案も見当たりません。どこが間違っているのか分かりません。私は以下のコードを貼り付けました。 `ドキュメントエラーLucene 6.2.0 API
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.document.Field;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Paths;
import java.io.Reader;
import java.util.Iterator;
public class Indexing {
public static void main(String argv[]) {
String[] tags={"DOCNO","HEAD","BYLINE","DATELINE","TEXT"};
try {
String indexPath="C:\\Users\\sujit\\Desktop\\lucene_indexed"; //Path to create the Lucene Document Index.
File fXmlFile = new File("C:\\Users\\sujit\\Desktop\\sample.txt"); //Path to find the document to be indexed.
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
Analyzer analyzer=new StandardAnalyzer();
Directory dir = FSDirectory.open(Paths.get(indexPath));
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer=new IndexWriter(dir,iwc);
String DocNo="" ,Head="",ByLine="",DateLine="",Text="";
//System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("DOC");
//System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
//**Place where I see the error **
Document luceneDoc=new Document();
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
for(int tagNo=0;tagNo<tags.length;tagNo++){
for(int j=0;j<eElement.getElementsByTagName(tags[tagNo]).getLength();j++){
if(tags[tagNo]==tags[0])
DocNo+=eElement.getElementsByTagName(tags[tagNo]).item(j).getTextContent();
else if(tags[tagNo]==tags[1])
Head+=eElement.getElementsByTagName(tags[tagNo]).item(j).getTextContent();
else if(tags[tagNo]==tags[2])
ByLine+=eElement.getElementsByTagName(tags[tagNo]).item(j).getTextContent();
else if(tags[tagNo]==tags[3])
DateLine+=eElement.getElementsByTagName(tags[tagNo]).item(j).getTextContent();
else if(tags[tagNo]==tags[4])
Text+=eElement.getElementsByTagName(tags[tagNo]).item(j).getTextContent();
}
System.out.println(DocNo+Head+ByLine+DateLine+Text+"\n");
luceneDoc.add(new StringField("DOCNO",DocNo,Field.Store.YES));
luceneDoc.add(new StringField("HEAD",Head,Field.Store.YES));
luceneDoc.add(new StringField("BYLINE",ByLine,Field.Store.YES));
luceneDoc.add(new StringField("DATELINE",DateLine,Field.Store.YES));
luceneDoc.add(new StringField("TEXT",Text,Field.Store.YES));
writer.addDocument(luceneDoc);
DocNo="";Head="";ByLine="";DateLine="";Text="";
}
writer.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
ありがとう、それは私の問題を解決しました。 –