В 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