Domanda

Le mie domande Lucene solito esistere di un gruppo di e campi combinati. E 'possibile ottenere i campi interrogati fuori l'oggetto Query di nuovo?

Nessuna soluzione corretta

Altri suggerimenti

Forse intendevi estrarre i termini o nomi di campo? Dal momento che già sai che stai gestione di un BooleanQuery, per estrarre i campi si può semplicemente operare la matrice BooleanClause restituito da BooleanQuery.getClauses (), riscrivere ogni clausola alla sua query di base (Query.rewrite) e applicare ricorsivamente fino ad avere un TermQuery sulle mani.

Se volevi estrazione termine, io non sono sicuro di Lucene.NET, ma in Java Lucene è possibile utilizzare org.apache.lucene.search.highlight.QueryTermExtractor; si passa un (riscritto) query per uno dei suoi getTerms sovraccarichi e ottenere una serie di WeightedTerms.

Per quanto mi ricordo, gli aspetti negativi di utilizzare questa tecnica sono:

  • Poiché si utilizza internamente un termine fissato non gestirà più istanze dello stesso motivo, ad esempio "Sogno dentro un sogno"
  • supporta solo tipi di query di base (TermQuery, BooleanQuery e qualsiasi altro tipo di query che supporta Query.extractTerms). Credo che abbiamo usato internamente per le istanze SpanNearQuery e SpanNearOrderedQuery, ma posso sbagliarmi su questo.

Ad ogni modo spero che questo sia sufficiente per iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top