我对 Lucene 没有太多经验,但我需要完成一项研究。我想使用基于本体的 Lucene 索引。所以,我需要任何建议,我应该使用什么,如何将 Lucene 与本体域结合起来等等。
谢谢,
- 幸运的
在 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 中,服务器端配置决定了存储哪些字段,如何解析它们等。
在每种情况下,您都需要弄清楚如何为每个元组创建一个唯一的 id。一种方法是生成三个值的连接(带分隔符)的哈希。