2009-02-15 12 views

risposta

12

MultiFieldQueryParser ha un [costruttore] [1] che accetta una mappa di boost. Si usa con qualcosa di simile:

String[] fields = new String[] { "title", "keywords", "text" }; 
HashMap<String,Float> boosts = new HashMap<String,Float>(); 
boosts.put("title", 10); 
boosts.put("keywords", 5); 
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
    fields, 
    new StandardAnalyzer(), 
    boosts 
); 

Per quanto riguarda la spinta massima, non sono sicuro, ma non si dovrebbe pensare a spinta in termini assoluti in ogni caso. Basta usare un rapporto di potenziamenti che abbia senso. Vedi anche this question.

[1]: https://lucene.apache.org/core/4_4_0/queryparser/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.html#MultiFieldQueryParser(org.apache.lucene.util.Version, java.lang.String [], org.apache.lucene.analysis.Analyzer, java.util.Map)

+0

Ciao, grazie per la risposta .... sto usando Lucene .net versione 2.0.0.4 Non vedo il costruttore MultiFieldQueryParser che accetta i valori di boost. MultiFieldQueryParser multiFieldQueryParser = new MultiFieldQueryParser (campi, _analyzer); Posso sapere quale versione di Lucene stai usando? Grazie. –

+0

Il parametro boost è disponibile solo in Lucene 2.4. Se non è possibile eseguire l'aggiornamento, è consigliabile copiare il codice nel proprio MyMutliFieldQueryParser. Non è così tanto codice. – itsadok

+0

Potrebbe essere necessario effettuare il porting del codice da java ... Non sono riuscito a trovare il codice sorgente di lucene.net online (svn.apache.org è inattivo su ATM). – itsadok