Sto provando ad implementare un indice di documenti (rougly corrispondente alle righe del DB), dove uno dei campi è un numero intero. Li sto aggiungendo all'indice come:Come cercare un campo int in Lucene 4?
Document doc = new Document();
doc.add(new StringField("ticket_number", rs.getString("ticket_number"),
Field.Store.YES));
doc.add(new IntField("ticket_id", rs.getInt("ticket_id"),
Field.Store.YES));
doc.add(new StringField("id_s", rs.getString("ticket_id"),
Field.Store.YES));
w.addDocument(doc);
Sembra che io non posso interrogare il campo ticket_id
a tutti, mentre id_s
funziona bene.
Uno dei documenti è (ho aggiunto spazio bianco per migliorare la leggibilità):
Document<
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<ticket_number:230114W>
stored<ticket_id:152>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<id_s:152>>
Quindi il mio campo int è memorizzato, ma non indicizzati. Questa query funziona come previsto: id_s:152
, mentre questo non restituisce mai nulla: ticket_id:152
.
Cosa sto sbagliando? Come posso aggiungere un campo di questo tipo all'indice e renderlo ricercabile?
Grazie amico, questo mi ha aiutato molto. – SoluableNonagon
Does '234' indica lo stesso pezzo di dati, in tal caso non penso che sia giusto memorizzarlo nell'indice due volte, una volta come una stringa e una volta come un int. –
'234' è memorizzato con campi diversi (' ticket_id' e 'id_s'). Non vedo niente di sbagliato in questo. Concettualmente questo potrebbe essere sbagliato, ma lo scopo di questo esempio è solo quello di dimostrare che entrambe le tecniche sono possibili. – mindas