lucene и онтология

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

Спасибо,

  • Везучий

person Lucky    schedule 17.04.2011    source источник
comment
Вам понадобится гораздо больше подробностей о том, что вы ищете   -  person Prescott    schedule 17.04.2011
comment
Это должно быть просто. У меня уже есть онтология, и я хочу индексировать документы на основе этой онтологии, но с помощью Lucene. Эта онтология имеет типы ‹название;автор;книга›. Я хочу для каждой тройки создать документ, который содержит поля имени, автора и книги.   -  person Lucky    schedule 17.04.2011
comment
Похоже, вы точно знаете, что хотите сделать, проверьте Lucene Solr, чтобы быстро начать работу с Люсен   -  person Prescott    schedule 17.04.2011
comment
Вот подробности... Я знаю о Lucene Solr, но не пробовал работать с Solr. Я вручную аннотировал документ. Теперь я хочу аннотировать тот же репозиторий, используя свой аннотатор, но на основе той же онтологии. Если я смогу расширить Solr с помощью мю-онтологии, то это будет решением... Извините, если я задам глупый вопрос, я все еще новичок :)   -  person Lucky    schedule 17.04.2011
comment
Вероятно, это связано с тем, что я не понимаю определения некоторых из этих слов и того, что вы ищете. Можете ли вы отредактировать свой вопрос с примером того, что у вас есть, и чего вы хотите достичь?   -  person Prescott    schedule 17.04.2011
comment
Извините, я попробую... Может быть, мы должны прояснить некоторые вещи. Я так понимаю, Lucene Solr — это платформа для индексации и поиска документов? Я хочу индексировать контент на основе онтологии моей предметной области, в которой уже определены концепции. Как и платформа KIM, платформа KIM использует онтологию Proton.   -  person Lucky    schedule 17.04.2011


Ответы (1)


В Lucene вы можете сделать что-то вроде

protected Document createDocumentFromTuple(Tuple t) {
    Document doc = new Document(); // this is the Lucene document to create
    String docid = createId(t);
    doc.add(new Field("id", docid, Field.Store.YES, Field.Index.NOT_ANALYZED );
    doc.add(new Field("name", t.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED );
    doc.add(new Field("author", t.getAuthor(), Field.Store.YES, Field.Index.NOT_ANALYZED );
    doc.add(new Field("book", t.getBook(), Field.Store.YES, Field.Index.NOT_ANALYZED );
    return doc;
}

Это предполагает, что три поля не должны разлагаться на составные термины каким-либо Анализатором; если это неверное предположение, измените последний параметр на Field.Index.ANALYZED.

Эквивалент Solr (который может иметь больше смысла, если вы не анализируете поля, будет

protected SolrInputDocument createIndexableDocument(Tuple t) {
    SolrInputDocument doc = new SolrInputDocument();
    String docid = createId(t);
    doc.addField("id", docid);
    doc.addField("name", t.getName());
    doc.addField("author", t.getAuthor());
    doc.addField("book", t.getBook());
    return doc;
}

В Solr конфигурация на стороне сервера определяет, какие поля хранятся, как они анализируются и т. д.

В каждом случае вам нужно будет выяснить, как создать уникальный идентификатор для каждого кортежа. Один из способов сделать это — сгенерировать хэш конкатенации (с разделителями) трех значений.

person Gene Golovchinsky    schedule 18.04.2011
comment
Спасибо! Я попробую это, и я думаю, что это сработает. Я пытался использовать Nutch, я увидел, что могу использовать любую онтологию, которая мне нравится, конечно, с Nutch. Но, я думаю, что это сделает работу. Спасибо! - person Lucky; 18.04.2011
comment
Дайте мне знать, если это делает то, что вы хотите. - person Gene Golovchinsky; 19.04.2011
comment
Хорошо, я буду. Может быть, мне надоели эти онтологии… но есть ли способ преобразовать онтологию в кортеж или набор кортежей? Или лучше извлечь определенный кортеж из онтологии? - person Lucky; 19.04.2011
comment
Это звучит как другой вопрос, и вам нужно будет сделать его более ясным, что вы подразумеваете под онтологией, что такое ваше хранилище кортежей, что означает извлечение кортежа из онтологии. Чем более целенаправленно вы зададите вопрос, тем больше вероятность получить полезный ответ. - person Gene Golovchinsky; 19.04.2011
comment
На самом деле, я просто думал об онтологии, потому что это была идея. Но сейчас все немного по-другому. Дело в том, что у меня нет файла OWL, зато есть файл mdb. В этом файле несколько таблиц (Ключевое слово, Метаданные, Автор метаданных…). Таким образом, кортежи в этом случае даже лучше. Мне нужно будет выбрать, из каких полей я создам кортеж, и этот пример, который вы мне дали, сделает эту работу. Спасибо за комментарии. - person Lucky; 19.04.2011