lucene.net을 사용하여 PDF 파일을 인덱싱하고 있습니다. 약 15000 pdfs에 40 분, 색인 생성 시간이 내 폴더에서 pdf 파일 증가와 함께 증가합니다.Lucene.net 인덱싱 속도를 향상시킬 수있는 방법
- 어떻게 lucene.net에서 색인 생성 속도를 향상시킬 수 있습니까?
- 빠른 인덱싱 성능을 가진 다른 인덱싱 서비스가 있습니까?
최신 버전의 lucene.net 색인 생성 (Lucene.net 3.0.3)을 사용하고 있습니다.
다음은 색인 생성을위한 코드입니다.
public void refreshIndexes()
{
// Create Index Writer
string strIndexDir = @"E:\LuceneTest\index";
IndexWriter writer = new IndexWriter(Lucene.Net.Store.FSDirectory.Open(new System.IO.DirectoryInfo(strIndexDir)), new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), true, IndexWriter.MaxFieldLength.UNLIMITED);
// Find all files in root folder create index on them
List<string> lstFiles = searchFiles(@"E:\LuceneTest\PDFs");
foreach (string strFile in lstFiles)
{
Document doc = new Document();
string FileName = System.IO.Path.GetFileNameWithoutExtension(strFile);
string Text = ExtractTextFromPdf(strFile);
string Path = strFile;
string ModifiedDate = Convert.ToString(File.GetLastWriteTime(strFile));
string DocumentType = string.Empty;
string Vault = string.Empty;
string headerText = Text.Substring(0, Text.Length < 150 ? Text.Length : 150);
foreach (var docs in ltDocumentTypes)
{
if (headerText.ToUpper().Contains(docs.searchText.ToUpper()))
{
DocumentType = docs.DocumentType;
Vault = docs.VaultName; ;
}
}
if (string.IsNullOrEmpty(DocumentType))
{
DocumentType = "Default";
Vault = "Default";
}
doc.Add(new Field("filename", FileName, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("text", Text, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("path", Path, Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("modifieddate", ModifiedDate, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("documenttype", DocumentType, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("vault", Vault, Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc);
}
writer.Optimize();
writer.Dispose();
}
정말'writer.Optimize()'를 호출해야합니까? 'writer.Commit()'충분하지 않겠습니까? – sisve
@SimonSvensson 답장을 보내 주셔서 감사합니다. Optimize()가 필요하지 않습니다. commit()에 의해 시도되었지만 성능이 향상되지 않았습니다. – Munavvar
@Munavvar, 변경 제안을하기 전에 관련 방법에 대한 벤치 마크를 추가 했습니까? 나는 특히 searchFiles와 ExtractTextFromPdf 메소드에 관심이있다. 난 당신의 코드가 괜찮아 보이는 (분석해서는 안되는 날짜를 제외하고) 후자의 문제라고 생각한다. 또한 PDF의 크기는 무엇입니까? 인덱스 및 분석을 관련 문자 수로 제한 할 수 있습니다. – AR1