Эффективный поиск по маленькому тексту - PullRequest
0 голосов
/ 14 апреля 2011

У меня много небольших текстов (скажем, около 500 слов) и две базы данных с примерно 10.000 записей в каждой (ключевые слова).

Теперь я хочу обработать каждый текст и выяснить, какие ключевые слова (те, которые сохранены в 2 базах данных) содержатся в тексте.

У кого-нибудь из вас есть хороший подход к тому, как сделать это эффективно?

Я хотел обработать каждый текст и проиндексировать его (возможно, с помощью lucene) перед поиском в базе данных по нему, но я не знаю, подходит ли lucene для этого.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Lucene - как раз тот инструмент, который подходит для этой задачи.

Один из способов достижения вашей цели - использовать RAMDirectory для индексации каждого текста, а затем получить TermEnum из индекса с помощью IndexReader. Теперь вы можете сопоставить термины с ключевыми словами в вашей БД.

Другой подход заключается в том, чтобы проиндексировать каждый текст как документ lucene, а затем выполнить итерацию по вашим ключевым словам и получить termDocs для текущего термина => все тексты, которые содержат текущий термин / ключевое слово.

0 голосов
/ 14 апреля 2011

Ваш текст должен быть каким-то образом проиндексирован для поиска по нему. У вас есть два варианта:

1) Загрузите ваши тексты в базу данных MySQL и сделайте поле / столбец полнотекстовым для поиска

2) Как вы говорите, индекс с Lucene.

Затем прочитайте ваши ключевые слова в список, зациклите их и выполните запрос к Lucene / MySQL.

Предположим, что ваши наборы данных невелики, я бы пошел с MySQL - это будет намного быстрее настроить.

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