Domanda

Qual è il modo migliore per scoprire quali termini in una query confrontato con un dato documento restituito come un colpo in Lucene?

Ho cercato un metodo strano che coinvolge colpo evidenziando pacchetto in Lucene contrib e anche un metodo che le ricerche per ogni parola nella query contro la parte superiore più del documento ( "DocID: xy e descrizione: each_word_in_query").

Non ottenere risultati soddisfacenti? Hit evidenziazione non riporta alcune delle parole che ha trovato un documento diverso dalla prima. Non sono sicuro se il secondo approccio è la migliore alternativa.

È stato utile?

Soluzione

Il metodo spiegare nel Searcher è un bel modo per vedere quale parte di una query è stato abbinato e come influisce il punteggio complessivo.

Esempio tratto dal libro Lucene In Azione 2nd Edition:

public class Explainer {

  public static void main(String[] args) throws Exception {

     if (args.length != 2) {
        System.err.println("Usage: Explainer <index dir> <query>");
        System.exit(1);
     }

     String indexDir = args[0];
     String queryExpression = args[1];
     Directory directory = FSDirectory.open(new File(indexDir));
     QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,
                                     "contents", new SimpleAnalyzer());

     Query query = parser.parse(queryExpression);
     System.out.println("Query: " + queryExpression);
     IndexSearcher searcher = new IndexSearcher(directory);
     TopDocs topDocs = searcher.search(query, 10);
     for (int i = 0; i < topDocs.totalHits; i++) {
        ScoreDoc match = topDocs.scoreDocs[i];
        Explanation explanation = searcher.explain(query, match.doc);   
        System.out.println("----------");
        Document doc = searcher.doc(match.doc);
        System.out.println(doc.get("title"));
        System.out.println(explanation.toString());
     }
  }
}

Questa spiegherà il punteggio di ogni documento che corrisponde alla query.

Altri suggerimenti

Non ancora provato, ma hanno uno sguardo alla realizzazione di org.apache.lucene.search.highlight.QueryTermExtractor.

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