2010-12-30 3 views

Antwort

7

Sie können während der Indizierung eine Feldverstärkung festlegen. Dies setzt voraus, dass Sie Ihre Daten in zwei verschiedenen Feldern haben. Sie müssen einen benutzerdefinierten Scorer schreiben, wenn Sie alle Daten in einem großen zusammengeführten Feld speichern möchten.

var field = new Field("title", "My title of awesomeness", Field.Store.NO, Field.Index.Analyzed); 
field.SetBoost(2.0); 
document.Add(field); 

Verwenden Sie zum Suchen eine BooleanQuery, die sowohl Titel als auch Text durchsucht.

var queryText = "where's my awesomeness"; 
var titleParser = new QueryParser(Version.LUCENE_29, "title", null); 
var titleQuery = titleParse.Parse(queryText); 
var bodyParser = new QueryParser(Version.LUCENE_29, "body", null); 
var bodyQuery = bodyParser.Parse(queryText); 

var mergedQuery = new BooleanQuery(); 
mergedQuery.Add(titleQuery, BooleanClause.Occur.Should); 
mergedQuery.Add(bodyQuery, BooleanClause.Occur.Should); 
// TODO: Do search with mergedQuery.