2011-01-12 10 views
5

Recientemente, estoy estudiando cómo almacenar e indexar usando Solr. Quiero hacer una búsqueda faceta.prefijo. Con el tokenizador de espacio en blanco, "Where are you" se dividirá en tres palabras y se indexará. Si busco facet.prefix = "where are", no se devolverá ningún resultado.Cómo usar NGramTokenizerFactory o NGramFilterFactory?

Yo google y encontré NGramFilterFactory puede ayudarme. Pero cuando aplico esta fábrica de filtros, encontré que el resultado es "w, h, e, ..., wh, ..", que divide la oración por carácter, no por palabra simbólica.

Utilizo los parámetros maxGramSize y minGramSize, establecido en 1 y 3. ¿Funciona NGramFilterFactory, verdad? ¿Debo agregar algunos otros parámetros? ¿Hay algunas otras fábricas de filtros que pueden ayudarme?

Gracias!

+0

Sí, así es exactamente como funciona ngram. ¿En qué contexto estás usando facet.prefix? –

+0

No es una respuesta para usted, sino una aclaración. NGram trabaja en personajes individuales. Puede tomar la palabra "gato" y cortarla en fichas como "c", "a", "t", "ca", "at" y "cat". * Parece * que puede estar queriendo lo que se llama tokenizador de tejas, que funciona de manera muy similar, pero a nivel de palabra en lugar de a nivel de personaje. – rfeak

+0

Hola Mauricio, quiero usar facet.prefix para autocompletar. Con el método predeterminado, las tres palabras se indexarán por separado. Al hacer una búsqueda facet.prefix, por supuesto, la búsqueda de "w" devolverá "where", pero al buscar "where", no se devolverá nada. Entonces quiero agregar los tokens para indexados. – user572485

Respuesta

1

Las facetas solo se deben aplicar a campos no tokenizados como cadenas. si desea que los resultados se muestren para "lo que es", no use ningún tokenizador para ese campo (o una directiva copyField). Supongo que quiere usar facet.prefix para autocompletar. usted puede hacer esto, look here.

para el ngramtokenizer check this out.