Se cruzan las fronteras con Lucene
Pregunta
Estoy usando Lucene, y estoy tratando de encontrar una manera para indexar y recuperar documentos que tienen una propiedad a distancia.
Por ejemplo tengo:
Document 1: Price:[30 TO 50]
Document 2: Price:[45 TO 60]
Document 3: Price:[60 TO 70]
y Me gustaría buscar todos los documentos cuyas áreas de distribución se cruzan un determinado intervalo de , en el ejemplo anterior, si busco Price in [55 TO 65]
que debería obtener Document 2
y Document 3
como resultados.
No creo NumericRangeQueries solo haría el truco, necesito trabajar en el índice con algo similar al R-árboles, pero se ponen en práctica en Lucene? Además, supongo que lo que necesita debe ser una subclase de MultiTermQuery, debido a que el Price in [55 TO 65]
consulta tiene dos límites, pero no veo nada adecuado entre las subclases de MultiTermQuery.
Cualquier ayuda es apreciada, Gracias,
Silvio
P.S. Estoy usando Lucene 2.9.0, pero puedo actualizar a la última versión, si es necesario.
Solución
Una opción sencilla para probar es, durante el tiempo de índice, simplemente ampliar sus rangos para cada valor discreto de la gama. Así [30 A 50] se indexado como 30, 31, 32, 33, 34, etc. A continuación, utilizar la consulta de intervalo normal para consultar la gama. Con tal de que no hay un montón de valores discretos (millones) esto podría llevar a cabo lo suficientemente bien.