2010-12-30 4 views

Répondre

7

Vous pouvez définir une augmentation de champ pendant l'indexation. Cela suppose que vous avez vos données dans deux champs différents. Vous devez écrire un marqueur personnalisé si vous voulez stocker toutes les données dans un grand champ fusionné.

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

Pour effectuer une recherche, utilisez un BooleanQuery qui recherche à la fois le titre et le corps.

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. 
Questions connexes