What is the difference between field (or document) boosting and query boosting?
Index time field boosts (field.setBoost(boost)) are a way to express things like “this document’s title is worth twice as much as the title of most documents”. Query time boosts (query.setBoost(boost)) are a way to express “I care about matches on this clause of my query twice as much as I do about matches on other clauses of my query”. Index time field boosts are worthless if you set them on every document. Index time document boosts (doc.setBoost(float)) are equivalent to setting a field boost on ever field in that document.