Я пытаюсь проиндексировать таблицу в базе данных, используя Lucene.Я использую Lucene только для индексации, поля не сохраняются.Упомянутая выше таблица имеет пять столбцов (идентификатор пользователя (PK), описание, номер отчета, тип отчета, отчет).
Я намерен использовать комбинацию ИД пользователя, номера отчета и типа отчета для получения данных из базы данных, если Lucene обнаружит попадание.
Одна запись в таблице может занимать несколько строк, например,
JQ123, SOMEDESCRIPTION, 1, FIN, содержание отчета о плавниках
JQ123, AnotherDescription, 2, MATH, содержание математического отчета
JQ123, YetAnotherDesc, 3, MATH, содержимое другого математического отчета
JD456, MoreDesc, 1, STAT, содержимое отчета о статистике ..so on
Некоторые типы отчетов, например (MATH), имеют высоко структурированное содержимое (XML, хранится в виде строки в последнем столбце) и вВ будущем я, возможно, захочу выделить часть содержимого в качестве поля документа.
До сих пор моя стратегия заключалась в создании документа Lucene для каждой строки и индексации его.Я думал, что это 1. Это легко и кажется логичным (для меня) 2. , если я в итоге извлекаю содержимое из определенных типов документов и превращаю их в поля,все, что потребуется, - это оператор if, который проверяет тип отчета и создает эти новые поля.Вот соответствующий код:
public void createDocument(){
Document luceneDocument=new Document();
luceneDocument.add(new Field("userid", userID, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("reportnumber", reportNum, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("reporttype", reportType, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("description", description, Field.Store.NO, Field.Index.ANALYZED));
luceneDocument.add(new Field("report", report, Field.Store.NO, Field.Index.ANALYZED));
if(reporttype.equalsIgnoreCase("MATH"){
luceneDocument.add(new Field("more fields", field content, Field.Store.NO, Field.Index.ANALYZED));
}
indexwriter.add(luceneDocument)
indexwriter.close
}
1. Влияет ли наличие разных документов для одной и той же записи на эффективность поиска Lucene каким-либо образом?
2. Будет ли при таком подходе существенное дисковое пространство по сравнению с наличием одного документа на запись в Lucene (я не храню любые поля )?
Заранее спасибоза ваш ответ