建立索引:
建立索引时没有出错,但是读取索引时出现如上错误,查看索引的目录,显示索引目录都为0kb,导致此问题的原因是因为没有关流的原因,也就是
public void testCreateIndex() throws Exception{
Directory directory=FSDirectory.open(new File("D:/index"));
//lucene当前使用的版本
Version version=Version.LUCENE_44;
//抽象类。。。分词器,,,,对一段文本进行分词
Analyzer analyzer=new StandardAnalyzer(version);
IndexWriterConfig writerConfig=new IndexWriterConfig(version, analyzer);
IndexWriter indexWriter=new IndexWriter(directory, writerConfig);
Document doc=new Document();
//构造索引document对应的字段,inxdexableFild是一个接口,
IndexableField field=new IntField("id", 1, Store.YES);
IndexableField stringField=new StringField("title", "小苹果成功逆袭", Store.YES);
IndexableField testField=new TextField("content", "你是我的小呀小苹果", Store.YES);
doc.add(field);
doc.add(testField);
doc.add(stringField);
indexWriter.addDocument(doc);
//indexWriter.close();
}
读取索引:
<pre name="code" class="java">@Test
public void SearchTest() throws Exception{
Directory directory=FSDirectory.open(new File("D:/index"));
IndexReader r=DirectoryReader.open(directory);
//索引读取器
IndexSearcher indexSearcher=new IndexSearcher(r);
//query是一个查询对象,具体的查询规则
Query query=new TermQuery(new Term("content","苹"));
//检索符合条件的前面n条记录
TopDocs topDocs = indexSearcher.search(query, 100);
//返回命中文档的id
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
int doce = scoreDoc.doc;
Document document = indexSearcher.doc(doce);
System.out.println("id=="+document.get("id"));
System.out.println("title=="+document.get("title"));
System.out.println("content=="+document.get("content"));
}
}
建立索引时没有出错,但是读取索引时出现如上错误,查看索引的目录,显示索引目录都为0kb,导致此问题的原因是因为没有关流的原因,也就是
indexWriter.close();导致没有写入到索引中去,所以出现此异常