Pregunta

Mis consultas de Lucene por lo general existe de un montón de y campos combinados. ¿Es posible obtener los campos consultados fuera del objeto de consulta de nuevo?

No hay solución correcta

Otros consejos

¿Se refiere a la extracción de los términos o los nombres de los campos? Puesto que usted ya sabe que el manejo de una BooleanQuery, para extraer los campos que puede simplemente iterar la matriz devuelta por BooleanClause BooleanQuery.getClauses (), vuelve a escribir cada cláusula a su consulta base (Query.rewrite) y aplicar de forma recursiva hasta que tenga un TermQuery en sus manos.

Si tenía intención de extracción de términos, no estoy seguro acerca de Lucene.NET, pero en Java Lucene puede utilizar org.apache.lucene.search.highlight.QueryTermExtractor; se pasa una consulta (reescrito) a uno de sus getTerms sobrecargas y obtener una gran variedad de WeightedTerms.

Por lo que yo recuerdo, los inconvenientes para el uso de esta técnica son:

  • Puesto que internamente usa un término establecido que no será manejar múltiples instancias de la misma manera, por ejemplo, "Sueño dentro de un sueño"
  • sólo es compatible con tipos de consulta base (TermQuery, BooleanQuery y cualquier otro tipo de consulta que soporta Query.extractTerms). Creo que lo hemos utilizado internamente para casos SpanNearQuery y SpanNearOrderedQuery, pero puedo estar equivocado en esto.

De cualquier manera espero que esto es suficiente para empezar.

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