Определить наличие ключевых слов в документе из списка - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу создать список тегов для документа Lucene на основе предварительно определенного списка.

Итак, если у нас есть документ с текстом

Ищем Java-программиста с опытом работы в Lucene

и у нас есть список ключевых слов (около 1000 наименований)

java, php, lucene, c # [...]

Я хочу определить, что в документе существуют ключевые слова Java и Lucene. Просто сделать java или php или lucene не получится, потому что тогда я не буду знать, какое ключевое слово сгенерировало попадание.

Есть какие-нибудь предложения о том, как реализовать это в Lucene?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Да, это работает

FullTextSession fts = Search.getFullTextSession(getSessionFactory().getCurrentSession());

Query q = fts.getSearchFactory().buildQueryBuilder()
    .forEntity(Offer.class).get()
    .keyword()
    .onField("id")
    .matching(myId)
    .createQuery();
Object[] dId = (Object[]) fts.createFullTextQuery(q, Offer.class)
    .setProjection(ProjectionConstants.DOCUMENT_ID)
    .uniqueResult();

if(dId != null){

    IndexReader indexReader = fts.getSearchFactory().getIndexReaderAccessor().open(Offer.class);

    TermFreqVector freq = indexReader.getTermFreqVector((Integer) dId[0], "description");

}

Вы должны помнить, чтобы индексировать поле с помощью TermVector.YES в поисковой аннотации спящего режима для поля.

1 голос
/ 14 февраля 2012

Я предполагаю, что у вас есть одно или несколько проиндексированных полей, и вы хотите построить облако тегов на основе пересечения ваших ключевых слов и проиндексированных терминов для документа.

Ваша проблема очень похожа на выделение, поэтому применимы те же идеи, что вы можете:

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

Обратите внимание, что если вы хотите использовать векторы терминов, вам нужно включить их во время компиляции (см. Документацию Field.TermVector.YES и Конструктор поля ).

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