Использование Lucene для хранения данных из RSS-каналов - PullRequest
1 голос
/ 14 октября 2010

Я хотел бы хранить данные, извлекаемые ежечасно из RSS-каналов, в базе данных или в Lucene, чтобы текст можно было легко проиндексировать для WordCounts.

Мне нужно получить текст из элементов title и descriptionRSS элементы.

В идеале, для каждого почасового извлечения из данного канала я бы добавил строку в таблицу в наборе данных, состоящем из следующих столбцов:

feed_url, title_element_text, description_element_text,polling_date_time

Исходя из этого, я могу найти любой элемент в фиде и рассчитать количество ключевых слов на основе требуемого времени.

Это можно сделать в виде таблицы базы данных и хэш-карт, используемых для вычисленияна счет.Но могу ли я сделать это в Lucene до такой степени детализации вообще?Если да, то будет ли каждый фид формировать документ Lucene или каждая «строка» из таблицы базы данных будет образовывать единицу?

Кто-нибудь может посоветовать?

Спасибо

Martin O'Shea.

1 Ответ

0 голосов
/ 15 октября 2010

Мой анализ вашего вопроса таков:

for each item in feed:
    calculate term frequency of item, then add to feed's frequency list

Это не то, в чем Lucene преуспевает, поэтому CouchDB или другой db может быть таким же хорошим, если не лучшим выбором (как предлагает larsmans).Тем не менее, это может быть сделано (таким образом, что это, вероятно, немного проще, чем другие БД):

HashMap<string, int> terms = new HashMap<string, int>(indexReader.getUniqueTermCount());
TermEnum tEnum = indexReader.Terms();
while (tEnum.Next())
{
    results.Add(tEnum.Term().Text(), tEnum.DocFreq());
}

Все, что Lucene экономит вам, это сложность вычисления docfreq, и, вероятно, это будет немного быстреечем перебирать все ряды самостоятельно.Но я был бы удивлен, заметна ли разница в производительности для достаточно небольших наборов данных.

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