В 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 конфигурация на стороне сервера определяет, какие поля хранятся, как они анализируются и т. Д.
В каждом случае вам нужно будет выяснить, как создать уникальный идентификатор для каждого кортежа.сделать это, чтобы создать хэш конкатенации (с разделителями) из трех значений.