2011-01-12 6 views
5

Recentemente, sto studiando come memorizzare e indicizzare usando Solr. Voglio fare la ricerca facet.prefix. Con il tokenizzatore degli spazi bianchi, "Where are you" sarà diviso in tre parole e indicizzato. Se cerco facet.prefix = "dove sono", non verrà restituito alcun risultato.Come utilizzare NGramTokenizerFactory o NGramFilterFactory?

I google e ho trovato NGramFilterFactory mi può aiutare. Ma quando applico questa fabbrica di filtri, ho trovato che il risultato è "w, h, e, ..., wh, ..", che divide la frase per carattere, non per parola chiave.

Uso i parametri maxGramSize e minGramSize, impostato su 1 e 3. NGramFilterFactory funziona correttamente? Dovrei aggiungere altri parametri? Ci sono altre fabbriche di filtri che possono aiutarmi?

Grazie!

+0

Sì, è esattamente come funziona ngram. In quale contesto stai usando facet.prefix? –

+0

Non proprio una risposta per te, ma un chiarimento. NGram funziona su singoli personaggi. Può prendere la parola "gatto" e tagliarla in token come "c", "a", "t", "ca", "at" e "cat". Sembra * come si potrebbe desiderare quello che viene chiamato un tokenizer ghiaia, che funziona allo stesso modo, ma a livello di parola invece di un livello di carattere. – rfeak

+0

Ciao Mauricio, voglio usare facet.prefix per il completamento automatico. Con il metodo predefinito, le tre parole verranno indicizzate separatamente. Quando si esegue la ricerca facet.prefix, ovviamente, la ricerca "w" restituirà "where", ma cercando "where", non verrà restituito nulla. Quindi voglio aggiungere i token per indicizzati. – user572485

risposta

1

Le faccette dovrebbero essere applicate solo ai campi non tokenizzati come le stringhe. se si desidera che i risultati vengano visualizzati per "cosa sono", non utilizzare affatto tokenizer per quel campo (o una direttiva copyField). Immagino che tu voglia usare facet.prefix per il completamento automatico. puoi farlo, look here.

per il ngramtokenizer check this out.

Problemi correlati