2010-11-15 8 views
9

C'è un costruttore di campo Lucene:l'attributo vendite di un campo lucene

Field(String name, String value, Store store, Index index) 

Per esempio posso creare un nuovo campo da:

Field f1 = new Field("text", "The text content", Field.Store.YES, Field.Index.ANALYZED); 

io non sono esattamente sicuro del significato del quarto parametro: Index

Se impostato su Index.No, è necessario aggiungere questo campo come "campo"?

Dal momento che, a mio parere, una volta che un attributo viene dichiarato come campo, deve essere indicizzato, se non lo è allora perché lo si dichiara come campo?

Qual è la differenza tra query e ricerca?

risposta

19

I campi memorizzati sono ciò che viene restituito quando si ask Lucene to give you back a document. Mantengono il valore originale di un campo, senza analisi. Puoi usarli per presentare il documento agli utenti (non necessariamente tutti i campi).

I campi memorizzati che non sono indicizzati sono utili per memorizzare metadati relativi a un documento che l'utente non utilizzerà per interrogare l'indice. Un esempio potrebbe essere un ID di database da cui proviene un documento. Questo ID non verrà mai utilizzato dall'utente poiché non lo sa, quindi è generalmente inutile indicizzarlo. Ma se lo memorizzi, puoi usarlo per raccogliere informazioni extra dal tuo db in fase di runtime.

La differenza tra una query e una ricerca è piuttosto soggettiva. Per me, una ricerca è in realtà l'atto generale di ricerca nell'indice mentre una query è l'effettiva query string used to search the index.

18

Come accennato in Lucene FAQ:

Qual è la differenza tra memorizzati, in formato token, indicizzato, e Vector?

  • memorizzato = così com'è valore memorizzato nella Lucene
  • token = campo è analizzato tramite l'Analizzatore specificato - i token emessi sono indicizzati
  • indicizzati = testo (sia così com'è con parola chiave campi, o i token dai campi tokenizzati) è reso ricercabile (ovvero invertito)
  • Vectored = la frequenza dei termini per documento è memorizzata nell'indice in modo facilmente recuperabile.

Si può solo indice di contenuto campo senza negozio di esso, il campo Le ricerche, semplicemente non è possibile evidenziare il risultato, perché culminante richiede contenuto del messaggio originale, che dovrebbe Store.

+0

Quindi perché si crea un campo senza indicizzarlo? – hguser

+4

Ad esempio, memorizza il postid, indicizza il contenuto del post, quindi puoi caricare quei post postid dopo la ricerca lucene. – Robin