Pregunta

Estamos trabajando en la aplicación web con un modelo de búsqueda.

En el servlet de búsqueda que capturar los parámetros de la petición del cliente, y luego crear una consulta de hibernación-búsqueda para la búsqueda.

Ahora el problema es que los parámetros del cliente son mutables!.

Todos los parámetros que acepta se enumeran como sigue:

1) la palabra clave.

Las palabras clave (s) utilizando para la búsqueda, una solicitud de búsqueda se puede procesar incluso sólo este parámetro se pasa.

ejemplo válido:

/search?keyword="test"

2) lowleftX, lowleftY, upperrightX, upperrightY.

Estos cuatro parámetros debe ocurrir al mismo tiempo o never.Since estos cuatro paramers se utilizan para una TermRangeQuery en lucene. Si una de ellas se producen, el resto debe ser de tres ocurrir también.

Y, estos cuatro parámetros puede ocurrir con la "palabra clave" en el sametime.

ejemplo válido:

/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test"

3) categoría

Esto se utiliza para limitar el ámbito de búsqueda (sólo la búsqueda dentro de la categoría especial).

4) el comienzo, límite

Estos dos parámetros están utilizando para paginación.

5) returnFields

Los returnFields que se recuperará a partir del índice (si se almacena en el índice) y de retorno al cliente.

Así que no tengo ni idea acerca de cómo construir la consulta utilizando la sintaxis estimación (si .... más .... si ...).

Puede alguien decirme cómo?

¿Fue útil?

Solución

No tengo idea de lo que quiere decir con "sintaxis estimación", pero me parece que el punto 1 -3 son la consulta real Lucene. Usted tendría que inspeccionar los parámetros y decidir en función del nombre y el número de parámetros que tipo de consulta que tenga. El uso de las diferentes subclases de Consulta, en particular, BooleanQuery, a continuación, crear una consulta de Lucene apropiado y lo utiliza para crear un Hibernate Buscar FullTextQuery. En esta consulta de texto completo que especifique los parametros de inicio y de fin de carrera. Si está utilizando proyecciones para recuperar los valores de los campos directamente desde el índice también establece los nombres de los campos proyectados en la consulta de texto completo. Espero que esto ayude un poco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top