Pregunta

Estoy usando SolrNet para acceder a un índice de Solr donde tengo un campo de valor múltiple denominada "etiquetas". Quiero realizar el siguiente pseudo-código de consulta:

(tags: pila) ^ 10 O (tags: más) ^ 5 O (tags: flujo) ^ 2

donde el término "pila" está siendo impulsado por 10, "sobre" está siendo impulsado por 5 y "flujo" está siendo impulsado por 2. El resultado que estoy después es que los resultados con "pila" aparecerá más alto que aquellos con "flujo", etc.

El problema que estoy teniendo es que digamos "fluyen" sólo aparece en un par de documentos, pero aparece "apilar" en las cargas, a continuación, debido a un alto valor de IDF, documentos con "flujo" aparecen por encima de los que tienen "pila ".

Cuando este proyecto fue fue implementado directamente en Lucene, que utiliza ConstantScoreQuery y estos eliminó la FDI basada en el marcador únicamente en el valor de impulso.

¿Cómo se puede lograr esto con Solr y SolrNet, donde estoy effectivly de paso Solr una cadena de consulta? Si no puede, ¿hay una forma alternativa que pueda abordar este problema?

Gracias de antemano!

¿Fue útil?

Solución

Yo no creo que haya ninguna manera de expresar directamente una ConstantScoreQuery en Solr, pero parece que alcance y el prefijo consultas utilizan ConstantScoreQuery bajo el capó , lo que podría intentar falsificar una consulta rango, por ejemplo, tags:[flow TO flow]

Como alternativa, se podría implementar su propio Solr QueryParser.

Otros consejos

Solr 5.1 y más tarde ha construido esto en la sintaxis de consulta a través del analizador ^ = operador.

Así que acaba de tomar su búsqueda original: (Tags: pila) ^ 10 O (tags: más) ^ 5 O (tags: flujo) ^ 2

Y sustituir el ^ con ^ = a cambio de la constante impulsado a: (Tags: pila) ^ = 10 o (etiquetas: más) ^ = 5 O (tags: flujo) ^ = 2

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