Индексирование скоплений столбцов Lucene

#indexing #lucene #clob

#индексирование #lucene #скопление

Вопрос:

Привет, мы ищем механизм поиска в нашем приложении, который содержит множество реляционных таблиц, содержащих содержимое CLOB. У нас есть требования, позволяющие нашим пользователям выполнять поиск по этой информации. Мы изучаем Oracle Text, но пока не нашли никаких хороших новостей об этом продукте.

Мы думаем о чтении скопления в каком-либо процессе, извлекающем данные и индексирующем эти данные. Наши пользователи выполняли бы поиск, а мы сопоставляли бы индекс с идентификатором строки в наших таблицах и представляли результаты нашим пользователям.

Хорошая ли это задача для Lucene, или я не думаю должным образом?

Ответ №1:

Вы должны иметь возможность добавлять текст в своем CLOB в одно поле, а идентификатор строки — в другое поле. Если скопление уже сохранено в вашей базе данных, не сохраняйте его снова в индексе Lucene (используйте Store.NO при добавлении текстового поля). Сохраните идентификатор строки. Когда документ совпадает, вы можете извлечь поле идентификатора строки из результатов и использовать его для ссылки на свою таблицу.

 String rowid = ...; // row id from DB
String text = ...; // data from CLOB;
Document doc = new Document();
doc.add(new Field(FIELD_ID, rowid, Store.YES, Index.NOT_ANALYZED));
doc.add(new Field(FIELD_BODY, text, Store.NO, Index.ANALYZED, TermVector.YES));