Domanda

Sto usando Lucene.net 3.0.3 per indicizzare il contenuto di documenti di parole, eccellenti, ecc. E alcuni campi personalizzati per ciascun documento.
Se indicizzo un campo chiamato "titolo" come Field.index.not_analyzed L'indice Lucene ha immagazzinato il campo in forma corretta. Il titolo del buco è conservato in un singolo token. È quello che voglio.

per esempio Il titolo del documento è "Lorem ipsum dolor"
Campo in Lucene-Index: "Lorem ipsum dolor"

Se cerco utilizzando la ricerca esatta in questo campo non ottengo risultati.
Il mio ricercante sembra: Titolo: "Lorem ipsum dolor"
Per la ricerca, uso lo stesso standardanalzer.

Perché non riesco a trovare il documento?

È stato utile?

Soluzione

StandardAnalyzer è sensibile allo spazio bianco, tra gli altri delimitatori. Cioè, tokenizza il termine di ricerca in tre token:

( Lorem, ipsum, dolor )

Ma hai indicizzato il campo title usando Field.Index.NOT_ANALYZED Quindi nessuno dei tre token sopra può abbinare il singolo token in questo campo:

( Lorem ipsum dolor )

Uso KeywordAnalyzer, che tokenizza l'intero valore di campo come un singolo token. Come sempre, è necessario utilizzare lo stesso analizzatore sia per l'indicizzazione che per la ricerca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top