Как хранить векторы документов в базе данных для поисковой системы?

Я реализовал поисковую систему на Java. Он имеет базу данных, в которой хранится инвертированный индекс, т. е. сопоставление терминов со списком документов, в которых термин появляется. Существует функция, которая позволяет пользователю загружать документ, который можно добавить в документ для индексации. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда добавляется новый документ, индекс восстанавливается в памяти, а не обновляется. Для обновления мне понадобится база данных, в которой хранятся векторы документов, которые по сути являются tf-idf (частота терминов * обратная частота документа) для каждого термина в индексе. Я не могу разработать для него структуру базы данных, так как для хранения такой структуры потребуются строки и столбцы или несколько таблиц.

мне нужно хранить

1. Document ID 
2. Document Title
3. N dimensional Document vector where N is the number of unique terms
4. N terms 
5. IDF of each term
6. TF of each term for every document.

Мне это нужно, чтобы во время сопоставления запроса я мог извлечь этот вектор и вычислить его сходство с вектором запроса. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Большое спасибо, я уверен, что здесь мне помогут.


person Aashima    schedule 26.07.2012    source источник
comment
Вы нашли ответ на это? Как вы закончили хранить векторы документов?   -  person om_deshpande    schedule 10.08.2013


Ответы (1)


Вы уверены, что хотите использовать базу данных для реализации поисковой системы?

Вы можете взглянуть на эту среду Java, которая отлично справляется со своей задачей и очень проста в освоении.

Учебное пособие по Lucene за 5 минут

Он использует модель векторного пространства, и вам не нужно беспокоиться обо всех вышеупомянутых полях, которые вы упомянули в своем посте, поскольку Lucene хранит их вместе с гораздо более продвинутыми факторами ранжирования.

Мне жаль, что мой ответ не поможет вам, если вы намеренно используете базы данных.

person phanin    schedule 28.07.2012
comment
Привет, спасибо за ваш ответ! На самом деле я намеренно не использовал lucene, так как хотел создать поисковую систему. Ну, на самом деле, хотя я определился с таблицами и структурой базы данных, мне не очень повезло, так как он должен снова формировать векторы, читая базу данных (и это занимает целую вечность) каждый раз, когда загружается новый файл. :\ - person Aashima; 28.07.2012