2012-01-16 12 views
6

¿Es posible determinar que los términos específicos son más importantes que otros al crear el índice (no al consultarlo)?Aumento de los términos de Lucene al compilar el índice

Considérese por ejemplo un filtro sinónimo:
doc 1: "este es un buen coche"
doc 2: "este es un buen vehículo"

Quiero añadir el vehículo plazo para el primer documento y el término automóvil para el segundo documento, pero quiero que si más adelante se consulta el índice con la palabra coche, entonces el primer documento se puntuará más alto que el segundo y si se pregunta por el vehículo, será al revés.

¿Llamarán a setBoost en los campos antes de agregarlos a sus respectivos documentos?

O tal vez debería agregar los sinónimos a un nombre de campo diferente?

¿O estoy mirando esto desde un punto de vista incorrecto?

Gracias

Respuesta

4

ajustes de intensificación en un presentadas afecta a todos los términos de ese campo para que esto no funcionaría en su caso.

Pero debería ser posible usar cargas útiles Lucene (una matriz de bytes que se puede configurar para cada término). Los usarías para establecer aumentos específicos de términos (vehículo a 0.5 para el documento 1, por ejemplo). A continuación, implementará su propio Similarity y anulará el método scorePayload() para descodificar ese impulso y luego usará PayloadTermQuery, lo que le permite contribuir al puntaje basado en las botas que tiene en la carga útil para ese término.

+0

Gracias, intentaré buscar un ejemplo basado en aquellas clases y métodos que anotó aquí. – epeleg

+0

¿También es posible restringir estos aumentos de carga útil solo a los términos en un campo particular (por ejemplo, "etiquetas")? – RalfB

Cuestiones relacionadas