You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/09/07 15:34:48 UTC

svn commit: r1701621 [1/6] - in /lucene/dev/trunk: lucene/ lucene/core/src/java/org/apache/lucene/search/ lucene/core/src/java/org/apache/lucene/search/payloads/ lucene/core/src/java/org/apache/lucene/search/similarities/ lucene/core/src/java/org/apach...

Author: jpountz
Date: Mon Sep  7 13:34:46 2015
New Revision: 1701621

URL: http://svn.apache.org/r1701621
Log:
LUCENE-6590: Replace Query.getBoost, setBoost and clone with a new BoostQuery.

Added:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BoostQuery.java   (with props)
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanBoostQuery.java   (with props)
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoostQuery.java   (with props)
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpanBoostQuery.java   (with props)
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQueryExplanations.java   (with props)
Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/MIGRATE.txt
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/AutomatonQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/CachingWrapperQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreWeight.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DocValuesRewriteMethod.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FieldValueQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Filter.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryConstantScoreWrapper.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NGramPhraseQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PrefixQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Query.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryCache.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermRangeQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Weight.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/WildcardQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/package-info.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/BasicStats.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/DFRSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/IBSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/LMDirichletSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/LMJelinekMercerSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/LMSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/MultiSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/PerFieldSimilarityWrapper.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/Similarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/FieldMaskingSpanQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanContainQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanContainingQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanNearQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanTermQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWithinQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/ToStringUtils.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/TestSearch.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestComplexExplanations.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestConjunctions.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFieldValueQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestLRUQueryCache.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestNGramPhraseQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestNeedsScores.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleExplanations.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermRangeQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestUsageTrackingFilterCachingPolicy.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestWildcard.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadExplanations.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpanExplanations.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpanSearchEquivalence.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/range/LongRange.java
    lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
    lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/taxonomy/TestTaxonomyFacetSumValueSource.java
    lucene/dev/trunk/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java
    lucene/dev/trunk/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryTermExtractor.java
    lucene/dev/trunk/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
    lucene/dev/trunk/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
    lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/highlight/custom/HighlightCustomQueryTest.java
    lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/AbstractTestCase.java
    lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FastVectorHighlighterTest.java
    lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java
    lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
    lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
    lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
    lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
    lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
    lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
    lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/SorterTestBase.java
    lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/BoostingQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CommonTermsQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java
    lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThisQuery.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/BoostingQueryTest.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/CommonTermsQueryTest.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreExplanations.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
    lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/mlt/TestMoreLikeThis.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/complexPhrase/ComplexPhraseQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/BoostQueryNodeBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/SlopQueryNodeBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/simple/SimpleQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/query/DistanceQuery.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/query/DistanceRewriteQuery.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/query/SpanNearClauseFactory.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/query/SrndQuery.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/BooleanQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/BoostingQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/BoostingTermBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/ConstantScoreQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/DisjunctionMaxQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/FuzzyLikeThisQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/LikeThisQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanFirstBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanNearBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanNotBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanOrTermsBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanTermBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/TermsQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/UserInputQueryBuilder.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/simple/TestSimpleQueryParser.java
    lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/bkdtree/BKDPointInBBoxQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/bkdtree/BKDPointInPolygonQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/rangetree/NumericRangeTreeQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/rangetree/SortedSetRangeTreeQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowFuzzyQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/DocValuesNumbersQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/DocValuesRangeQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/DocValuesTermsQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointDistanceQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointInBBoxQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointInBBoxQueryImpl.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointInPolygonQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointTermQuery.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/GeoPointTermQueryConstantScoreWrapper.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java
    lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestDocValuesNumbersQuery.java
    lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestDocValuesRangeQuery.java
    lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestDocValuesTermsQuery.java
    lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/composite/CompositeVerifyQuery.java
    lucene/dev/trunk/lucene/spatial3d/src/java/org/apache/lucene/bkdtree3d/PointInGeo3DShapeQuery.java
    lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java
    lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/CompletionQuery.java
    lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/CompletionWeight.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingQuery.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/RandomApproximationQuery.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanQuery.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanWeight.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/query/FilterQuery.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryUtils.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/WrappedQuery.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Mon Sep  7 13:34:46 2015
@@ -73,6 +73,12 @@ New Features
   fast, very accurate query to find all indexed points within an
   earth-surface shape (Karl Wright, Mike McCandless)
 
+API Changes
+
+* LUCENE-6590: Query.setBoost(), Query.getBoost() and Query.clone() are gone.
+  In order to apply boosts, you now need to wrap queries in a BoostQuery.
+  (Adrien Grand)
+
 Optimizations
 
 * LUCENE-6708: TopFieldCollector does not compute the score several times on the

Modified: lucene/dev/trunk/lucene/MIGRATE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/MIGRATE.txt?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/MIGRATE.txt (original)
+++ lucene/dev/trunk/lucene/MIGRATE.txt Mon Sep  7 13:34:46 2015
@@ -63,3 +63,18 @@ AttributeImpl removed the default, refle
 reflectWith(AtrributeReflector). The method was made abstract. If you have
 implemented your own attribute, make sure to add the required method sigature.
 See the Javadocs for an example.
+
+## Query.setBoost() and Query.clone() are removed (LUCENE-6590)
+
+Query.setBoost has been removed. In order to apply a boost to a Query, you now
+need to wrap it inside a BoostQuery. For instance,
+
+  Query q = ...;
+  float boost = ...;
+  q = new BoostQuery(q, boost);
+
+would be equivalent to the following code with the old setBoost API:
+
+  Query q = ...;
+  float boost = ...;
+  q.setBoost(q.getBoost() * boost);

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/AutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/AutomatonQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/AutomatonQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/AutomatonQuery.java Mon Sep  7 13:34:46 2015
@@ -18,13 +18,11 @@ package org.apache.lucene.search;
  */
 
 import java.io.IOException;
-import java.util.Objects;
 
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.util.AttributeSource;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.CompiledAutomaton;
 import org.apache.lucene.util.automaton.Operations;
@@ -149,7 +147,6 @@ public class AutomatonQuery extends Mult
     buffer.append('\n');
     buffer.append(automaton.toString());
     buffer.append("}");
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
   

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BlendedTermQuery.java Mon Sep  7 13:34:46 2015
@@ -252,8 +252,10 @@ public final class BlendedTermQuery exte
       if (i != 0) {
         builder.append(" ");
       }
-      TermQuery termQuery = new TermQuery(terms[i]);
-      termQuery.setBoost(boosts[i]);
+      Query termQuery = new TermQuery(terms[i]);
+      if (boosts[i] != 1f) {
+        termQuery = new BoostQuery(termQuery, boosts[i]);
+      }
       builder.append(termQuery.toString(field));
     }
     builder.append(")");
@@ -287,14 +289,14 @@ public final class BlendedTermQuery exte
       contexts[i] = adjustFrequencies(contexts[i], df, ttf);
     }
 
-    TermQuery[] termQueries = new TermQuery[terms.length];
+    Query[] termQueries = new Query[terms.length];
     for (int i = 0; i < terms.length; ++i) {
       termQueries[i] = new TermQuery(terms[i], contexts[i]);
-      termQueries[i].setBoost(boosts[i]);
+      if (boosts[i] != 1f) {
+        termQueries[i] = new BoostQuery(termQueries[i], boosts[i]);
+      }
     }
-    Query rewritten = rewriteMethod.rewrite(termQueries);
-    rewritten.setBoost(getBoost());
-    return rewritten;
+    return rewriteMethod.rewrite(termQueries);
   }
 
   private static TermContext adjustFrequencies(TermContext ctx, int artificialDf, long artificialTtf) {

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java Mon Sep  7 13:34:46 2015
@@ -28,7 +28,6 @@ import java.util.Objects;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.similarities.Similarity;
-import org.apache.lucene.util.ToStringUtils;
 
 /** A Query that matches documents matching boolean combinations of other
   * queries, e.g. {@link TermQuery}s, {@link PhraseQuery}s or other
@@ -203,22 +202,11 @@ public class BooleanQuery extends Query
       BooleanClause c = clauses.get(0);
       if (!c.isProhibited()) {  // just return clause
 
-        Query query = c.getQuery().rewrite(reader);    // rewrite first
+        Query query = c.getQuery();
 
-        if (c.isScoring()) {
-          if (getBoost() != 1.0f) {                 // incorporate boost
-            if (query == c.getQuery()) {                   // if rewrite was no-op
-              query = query.clone();         // then clone before boost
-            }
-            // Since the BooleanQuery only has 1 clause, the BooleanQuery will be
-            // written out. Therefore the rewritten Query's boost must incorporate both
-            // the clause's boost, and the boost of the BooleanQuery itself
-            query.setBoost(getBoost() * query.getBoost());
-          }
-        } else {
-          // our single clause is a filter
-          query = new ConstantScoreQuery(query);
-          query.setBoost(0);
+        if (c.isScoring() == false) {
+          // our single clause is a filter, so we need to disable scoring
+          query = new BoostQuery(new ConstantScoreQuery(query), 0);
         }
 
         return query;
@@ -238,9 +226,7 @@ public class BooleanQuery extends Query
       builder.add(rewritten, clause.getOccur());
     }
     if (actuallyRewritten) {
-      BooleanQuery rewritten = builder.build();
-      rewritten.setBoost(getBoost());
-      return rewritten;
+      return builder.build();
     }
     return super.rewrite(reader);
   }
@@ -249,7 +235,7 @@ public class BooleanQuery extends Query
   @Override
   public String toString(String field) {
     StringBuilder buffer = new StringBuilder();
-    boolean needParens= getBoost() != 1.0 || getMinimumNumberShouldMatch() > 0;
+    boolean needParens = getMinimumNumberShouldMatch() > 0;
     if (needParens) {
       buffer.append("(");
     }
@@ -282,10 +268,6 @@ public class BooleanQuery extends Query
       buffer.append(getMinimumNumberShouldMatch());
     }
 
-    if (getBoost() != 1.0f) {
-      buffer.append(ToStringUtils.boost(getBoost()));
-    }
-
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java Mon Sep  7 13:34:46 2015
@@ -43,6 +43,7 @@ final class BooleanWeight extends Weight
   final boolean disableCoord;
   final boolean needsScores;
   final float coords[];
+  float boost = 1f;
 
   BooleanWeight(BooleanQuery query, IndexSearcher searcher, boolean needsScores, boolean disableCoord) throws IOException {
     super(query);
@@ -105,7 +106,7 @@ final class BooleanWeight extends Weight
       i += 1;
     }
 
-    sum *= query.getBoost() * query.getBoost();             // boost each sub-weight
+    sum *= boost * boost; // boost each sub-weight
 
     return sum ;
   }
@@ -127,11 +128,11 @@ final class BooleanWeight extends Weight
   }
 
   @Override
-  public void normalize(float norm, float topLevelBoost) {
-    topLevelBoost *= query.getBoost();                  // incorporate boost
+  public void normalize(float norm, float boost) {
+    this.boost = boost;
     for (Weight w : weights) {
       // normalize all clauses, (even if non-scoring in case of side affects)
-      w.normalize(norm, topLevelBoost);
+      w.normalize(norm, boost);
     }
   }
 

Added: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BoostQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BoostQuery.java?rev=1701621&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BoostQuery.java (added)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BoostQuery.java Mon Sep  7 13:34:46 2015
@@ -0,0 +1,181 @@
+package org.apache.lucene.search;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.Term;
+
+/**
+ * A {@link Query} wrapper that allows to give a boost to the wrapped query.
+ * Boost values that are less than one will give less importance to this
+ * query compared to other ones while values that are greater than one will
+ * give more importance to the scores returned by this query.
+ */
+public final class BoostQuery extends Query {
+
+  /** By default we enclose the wrapped query within parenthesis, but this is
+   *  not required for all queries, so we use a whitelist of queries that don't
+   *  need parenthesis to have a better toString(). */
+  private static final Set<Class<? extends Query>> NO_PARENS_REQUIRED_QUERIES = Collections.unmodifiableSet(
+      new HashSet<>(Arrays.asList(
+          TermQuery.class,
+          PhraseQuery.class,
+          MultiPhraseQuery.class,
+          ConstantScoreQuery.class,
+          TermRangeQuery.class,
+          NumericRangeQuery.class,
+          PrefixQuery.class,
+          FuzzyQuery.class,
+          WildcardQuery.class,
+          RegexpQuery.class
+      )));
+
+  private final Query query;
+  private final float boost;
+
+  /** Sole constructor: wrap {@code query} in such a way that the produced
+   *  scores will be boosted by {@code boost}. */
+  public BoostQuery(Query query, float boost) {
+    this.query = Objects.requireNonNull(query);
+    this.boost = boost;
+  }
+
+  /**
+   * Return the wrapped {@link Query}.
+   */
+  public Query getQuery() {
+    return query;
+  }
+
+  /**
+   * Return the applied boost.
+   */
+  public float getBoost() {
+    return boost;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (super.equals(obj) == false) {
+      return false;
+    }
+    BoostQuery that = (BoostQuery) obj;
+    return query.equals(that.query)
+        && Float.floatToIntBits(boost) == Float.floatToIntBits(that.boost);
+  }
+
+  @Override
+  public int hashCode() {
+    int h = super.hashCode();
+    h = 31 * h + query.hashCode();
+    h = 31 * h + Float.floatToIntBits(boost);
+    return h;
+  }
+
+  @Override
+  public Query rewrite(IndexReader reader) throws IOException {
+    final Query rewritten = query.rewrite(reader);
+
+    if (boost == 1f) {
+      return rewritten;
+    }
+
+    if (rewritten.getClass() == BoostQuery.class) {
+      BoostQuery in = (BoostQuery) rewritten;
+      return new BoostQuery(in.query, boost * in.boost);
+    }
+
+    if (boost == 0f && rewritten.getClass() != ConstantScoreQuery.class) {
+      // so that we pass needScores=false
+      return new BoostQuery(new ConstantScoreQuery(rewritten), 0f);
+    }
+
+    if (query != rewritten) {
+      return new BoostQuery(rewritten, boost);
+    }
+
+    return super.rewrite(reader);
+  }
+
+  @Override
+  public String toString(String field) {
+    boolean needsParens = NO_PARENS_REQUIRED_QUERIES.contains(query.getClass()) == false;
+    StringBuilder builder = new StringBuilder();
+    if (needsParens) {
+      builder.append("(");
+    }
+    builder.append(query.toString(field));
+    if (needsParens) {
+      builder.append(")");
+    }
+    builder.append("^");
+    builder.append(boost);
+    return builder.toString();
+  }
+
+  @Override
+  public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
+    final Weight weight = query.createWeight(searcher, needsScores);
+    if (needsScores == false) {
+      return weight;
+    }
+    // Apply the query boost, this may impact the return value of getValueForNormalization()
+    weight.normalize(1f, boost);
+    return new Weight(this) {
+
+      @Override
+      public void extractTerms(Set<Term> terms) {
+        weight.extractTerms(terms);
+      }
+
+      @Override
+      public Explanation explain(LeafReaderContext context, int doc) throws IOException {
+        return weight.explain(context, doc);
+      }
+
+      @Override
+      public float getValueForNormalization() throws IOException {
+        return weight.getValueForNormalization();
+      }
+
+      @Override
+      public void normalize(float norm, float boost) {
+        weight.normalize(norm, BoostQuery.this.boost * boost);
+      }
+
+      @Override
+      public Scorer scorer(LeafReaderContext context) throws IOException {
+        return weight.scorer(context);
+      }
+      
+      @Override
+      public BulkScorer bulkScorer(LeafReaderContext context) throws IOException {
+        return weight.bulkScorer(context);
+      }
+    };
+  }
+
+}

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/CachingWrapperQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/CachingWrapperQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/CachingWrapperQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/CachingWrapperQuery.java Mon Sep  7 13:34:46 2015
@@ -41,7 +41,7 @@ import org.apache.lucene.util.RoaringDoc
  * needed.  The purpose is to allow queries to simply care about matching and
  * scoring, and then wrap with this class to add caching.
  */
-public class CachingWrapperQuery extends Query implements Accountable {
+public class CachingWrapperQuery extends Query implements Accountable, Cloneable {
   private Query query; // not final because of clone
   private final QueryCachingPolicy policy;
   private final Map<Object,DocIdSet> cache = Collections.synchronizedMap(new WeakHashMap<Object,DocIdSet>());
@@ -62,13 +62,6 @@ public class CachingWrapperQuery extends
     this(query, QueryCachingPolicy.CacheOnLargeSegments.DEFAULT);
   }
 
-  @Override
-  public CachingWrapperQuery clone() {
-    final CachingWrapperQuery clone = (CachingWrapperQuery) super.clone();
-    clone.query = query.clone();
-    return clone;
-  }
-
   /**
    * Gets the contained query.
    * @return the contained query.
@@ -77,16 +70,6 @@ public class CachingWrapperQuery extends
     return query;
   }
   
-  @Override
-  public float getBoost() {
-    return query.getBoost();
-  }
-  
-  @Override
-  public void setBoost(float b) {
-    query.setBoost(b);
-  }
-  
   /**
    * Default cache implementation: uses {@link RoaringDocIdSet}.
    */
@@ -98,11 +81,16 @@ public class CachingWrapperQuery extends
   public Query rewrite(IndexReader reader) throws IOException {
     final Query rewritten = query.rewrite(reader);
     if (query == rewritten) {
-      return this;
+      return super.rewrite(reader);
     } else {
-      CachingWrapperQuery clone = clone();
-      clone.query = rewritten;
-      return clone;
+      CachingWrapperQuery clone;
+      try {
+        clone = (CachingWrapperQuery) clone();
+        clone.query = rewritten;
+        return clone;
+      } catch (CloneNotSupportedException e) {
+        throw new AssertionError(e);
+      }
     }
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java Mon Sep  7 13:34:46 2015
@@ -25,18 +25,17 @@ import java.util.Objects;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
- * A query that wraps another query and simply returns a constant score equal to the
- * query boost for every document that matches the query.
- * It therefore simply strips of all scores and returns a constant one.
+ * A query that wraps another query and simply returns a constant score equal to
+ * 1 for every document that matches the query.
+ * It therefore simply strips of all scores and always returns 1.
  */
-public class ConstantScoreQuery extends Query {
-  protected final Query query;
+public final class ConstantScoreQuery extends Query {
+  private final Query query;
 
   /** Strips off scores from the passed in Query. The hits will get a constant score
-   * dependent on the boost factor of this query. */
+   * of 1. */
   public ConstantScoreQuery(Query query) {
     this.query = Objects.requireNonNull(query, "Query must not be null");
   }
@@ -50,21 +49,19 @@ public class ConstantScoreQuery extends
   public Query rewrite(IndexReader reader) throws IOException {
     Query rewritten = query.rewrite(reader);
 
-    if (rewritten.getClass() == getClass()) {
-      if (getBoost() != rewritten.getBoost()) {
-        rewritten = rewritten.clone();
-        rewritten.setBoost(getBoost());
-      }
-      return rewritten;
+    if (rewritten != query) {
+      return new ConstantScoreQuery(rewritten);
     }
 
-    if (rewritten != query) {
-      rewritten = new ConstantScoreQuery(rewritten);
-      rewritten.setBoost(this.getBoost());
+    if (rewritten.getClass() == ConstantScoreQuery.class) {
       return rewritten;
     }
 
-    return this;
+    if (rewritten.getClass() == BoostQuery.class) {
+      return new ConstantScoreQuery(((BoostQuery) rewritten).getQuery());
+    }
+
+    return super.rewrite(reader);
   }
 
   /** We return this as our {@link BulkScorer} so that if the CSQ
@@ -161,7 +158,6 @@ public class ConstantScoreQuery extends
     return new StringBuilder("ConstantScore(")
       .append(query.toString(field))
       .append(')')
-      .append(ToStringUtils.boost(getBoost()))
       .toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreWeight.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreWeight.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ConstantScoreWeight.java Mon Sep  7 13:34:46 2015
@@ -32,13 +32,13 @@ import org.apache.lucene.index.Term;
  */
 public abstract class ConstantScoreWeight extends Weight {
 
+  private float boost;
   private float queryNorm;
   private float queryWeight;
 
   protected ConstantScoreWeight(Query query) {
     super(query);
-    queryWeight = getQuery().getBoost();
-    queryNorm = 1f;
+    normalize(1f, 1f);
   }
 
   @Override
@@ -54,9 +54,20 @@ public abstract class ConstantScoreWeigh
   }
 
   @Override
-  public final void normalize(float norm, float topLevelBoost) {
-    queryNorm = norm * topLevelBoost;
-    queryWeight *= queryNorm;
+  public void normalize(float norm, float boost) {
+    this.boost = boost;
+    queryNorm = norm;
+    queryWeight = queryNorm * boost;
+  }
+
+  /** Return the normalization factor for this weight. */
+  protected final float queryNorm() {
+    return queryNorm;
+  }
+
+  /** Return the boost for this weight. */
+  protected final float boost() {
+    return boost;
   }
 
   /** Return the score produced by this {@link Weight}. */
@@ -65,7 +76,7 @@ public abstract class ConstantScoreWeigh
   }
 
   @Override
-  public final Explanation explain(LeafReaderContext context, int doc) throws IOException {
+  public Explanation explain(LeafReaderContext context, int doc) throws IOException {
     final Scorer s = scorer(context);
     final boolean exists;
     if (s == null) {
@@ -82,7 +93,7 @@ public abstract class ConstantScoreWeigh
     if (exists) {
       return Explanation.match(
           queryWeight, getQuery().toString() + ", product of:",
-          Explanation.match(getQuery().getBoost(), "boost"), Explanation.match(queryNorm, "queryNorm"));
+          Explanation.match(boost, "boost"), Explanation.match(queryNorm, "queryNorm"));
     } else {
       return Explanation.noMatch(getQuery().toString() + " doesn't match id " + doc);
     }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java Mon Sep  7 13:34:46 2015
@@ -42,7 +42,7 @@ import org.apache.lucene.index.Term;
  * include this term in only the best of those multiple fields, without confusing this with the better case of two different terms
  * in the multiple fields.
  */
-public class DisjunctionMaxQuery extends Query implements Iterable<Query> {
+public final class DisjunctionMaxQuery extends Query implements Iterable<Query> {
 
   /* The subqueries */
   private ArrayList<Query> disjuncts = new ArrayList<>();
@@ -118,6 +118,7 @@ public class DisjunctionMaxQuery extends
     /** The Weights for our subqueries, in 1-1 correspondence with disjuncts */
     protected final ArrayList<Weight> weights = new ArrayList<>();  // The Weight's for our subqueries, in 1-1 correspondence with disjuncts
     private final boolean needsScores;
+    private float boost;
 
     /** Construct the Weight for this Query searched by searcher.  Recursively construct subquery weights. */
     public DisjunctionMaxWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
@@ -126,6 +127,7 @@ public class DisjunctionMaxQuery extends
         weights.add(searcher.createWeight(disjunctQuery, needsScores));
       }
       this.needsScores = needsScores;
+      this.boost = 1f;
     }
 
     @Override
@@ -145,16 +147,15 @@ public class DisjunctionMaxQuery extends
         max = Math.max(max, sub);
         
       }
-      float boost = getBoost();
       return (((sum - max) * tieBreakerMultiplier * tieBreakerMultiplier) + max) * boost * boost;
     }
 
     /** Apply the computed normalization factor to our subqueries */
     @Override
-    public void normalize(float norm, float topLevelBoost) {
-      topLevelBoost *= getBoost();  // Incorporate our boost
+    public void normalize(float norm, float boost) {
+      this.boost = boost;
       for (Weight wt : weights) {
-        wt.normalize(norm, topLevelBoost);
+        wt.normalize(norm, boost);
       }
     }
 
@@ -219,34 +220,20 @@ public class DisjunctionMaxQuery extends
   public Query rewrite(IndexReader reader) throws IOException {
     int numDisjunctions = disjuncts.size();
     if (numDisjunctions == 1) {
-      Query singleton = disjuncts.get(0);
-      Query result = singleton.rewrite(reader);
-      if (getBoost() != 1.0f) {
-        if (result == singleton) result = result.clone();
-        result.setBoost(getBoost() * result.getBoost());
-      }
-      return result;
+      return disjuncts.get(0);
     }
-    DisjunctionMaxQuery clone = null;
-    for (int i = 0 ; i < numDisjunctions; i++) {
-      Query clause = disjuncts.get(i);
-      Query rewrite = clause.rewrite(reader);
-      if (rewrite != clause) {
-        if (clone == null) clone = this.clone();
-        clone.disjuncts.set(i, rewrite);
-      }
+    DisjunctionMaxQuery rewritten = new DisjunctionMaxQuery(tieBreakerMultiplier);
+    boolean actuallyRewritten = false;
+    for (Query sub : disjuncts) {
+      Query rewrittenSub = sub.rewrite(reader);
+      actuallyRewritten |= rewrittenSub != sub;
+      rewritten.add(rewrittenSub);
     }
-    if (clone != null) return clone;
-    else return this;
-  }
 
-  /** Create a shallow copy of us -- used in rewriting if necessary
-   * @return a copy of us (but reuse, don't copy, our subqueries) */
-  @Override @SuppressWarnings("unchecked")
-  public DisjunctionMaxQuery clone() {
-    DisjunctionMaxQuery clone = (DisjunctionMaxQuery)super.clone();
-    clone.disjuncts = (ArrayList<Query>) this.disjuncts.clone();
-    return clone;
+    if (actuallyRewritten) {
+      return rewritten;
+    }
+    return super.rewrite(reader);
   }
 
   /** Prettyprint us.
@@ -273,10 +260,6 @@ public class DisjunctionMaxQuery extends
       buffer.append("~");
       buffer.append(tieBreakerMultiplier);
     }
-    if (getBoost() != 1.0) {
-      buffer.append("^");
-      buffer.append(getBoost());
-    }
     return buffer.toString();
   }
 
@@ -298,9 +281,10 @@ public class DisjunctionMaxQuery extends
    */
   @Override
   public int hashCode() {
-    return Float.floatToIntBits(getBoost())
-            + Float.floatToIntBits(tieBreakerMultiplier)
-            + disjuncts.hashCode();
+    int h = super.hashCode();
+    h = 31 * h + Float.floatToIntBits(tieBreakerMultiplier);
+    h = 31 * h + disjuncts.hashCode();
+    return h;
   }
 
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DocValuesRewriteMethod.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DocValuesRewriteMethod.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DocValuesRewriteMethod.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DocValuesRewriteMethod.java Mon Sep  7 13:34:46 2015
@@ -18,7 +18,6 @@ package org.apache.lucene.search;
  */
 
 import java.io.IOException;
-import java.util.Objects;
 
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.IndexReader;
@@ -39,9 +38,7 @@ public final class DocValuesRewriteMetho
   
   @Override
   public Query rewrite(IndexReader reader, MultiTermQuery query) {
-    Query result = new ConstantScoreQuery(new MultiTermQueryDocValuesWrapper(query));
-    result.setBoost(query.getBoost());
-    return result;
+    return new ConstantScoreQuery(new MultiTermQueryDocValuesWrapper(query));
   }
   
   static class MultiTermQueryDocValuesWrapper extends Query {
@@ -63,18 +60,16 @@ public final class DocValuesRewriteMetho
     
     @Override
     public final boolean equals(final Object o) {
-      if (o==this) return true;
-      if (o==null) return false;
-      if (this.getClass().equals(o.getClass())) {
-        final MultiTermQueryDocValuesWrapper that = (MultiTermQueryDocValuesWrapper) o;
-        return this.query.equals(that.query) && this.getBoost() == that.getBoost();
+      if (super.equals(o) == false) {
+        return false;
       }
-      return false;
+      MultiTermQueryDocValuesWrapper that = (MultiTermQueryDocValuesWrapper) o;
+      return query.equals(that.query);
     }
     
     @Override
     public final int hashCode() {
-      return Objects.hash(getClass(), query, getBoost());
+      return 31 * super.hashCode() + query.hashCode();
     }
     
     /** Returns the field name for this query */

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FieldValueQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FieldValueQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FieldValueQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FieldValueQuery.java Mon Sep  7 13:34:46 2015
@@ -23,7 +23,6 @@ import java.util.Objects;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * A {@link Query} that matches documents that have a value for a given field
@@ -41,21 +40,21 @@ public final class FieldValueQuery exten
 
   @Override
   public boolean equals(Object obj) {
-    if (obj instanceof FieldValueQuery == false) {
+    if (super.equals(obj) == false) {
       return false;
     }
     final FieldValueQuery that = (FieldValueQuery) obj;
-    return super.equals(obj) && field.equals(that.field);
+    return field.equals(that.field);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(getClass(), field, getBoost());
+    return 31 * super.hashCode() + field.hashCode();
   }
 
   @Override
   public String toString(String field) {
-    return "FieldValueQuery [field=" + this.field + "]" + ToStringUtils.boost(getBoost());
+    return "FieldValueQuery [field=" + this.field + "]";
   }
 
   @Override

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Filter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Filter.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Filter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Filter.java Mon Sep  7 13:34:46 2015
@@ -92,7 +92,7 @@ public abstract class Filter extends Que
       }
 
       @Override
-      public void normalize(float norm, float topLevelBoost) {}
+      public void normalize(float norm, float boost) {}
 
       @Override
       public Explanation explain(LeafReaderContext context, int doc) throws IOException {

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FuzzyQuery.java Mon Sep  7 13:34:46 2015
@@ -24,7 +24,6 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.util.AttributeSource;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.automaton.LevenshteinAutomata;
 
 /** Implements the fuzzy search query. The similarity measurement
@@ -172,7 +171,6 @@ public class FuzzyQuery extends MultiTer
     buffer.append(term.text());
     buffer.append('~');
     buffer.append(Integer.toString(maxEdits));
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
   

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java Mon Sep  7 13:34:46 2015
@@ -87,7 +87,7 @@ public class IndexSearcher {
     }
 
     @Override
-    public SimWeight computeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats) {
+    public SimWeight computeWeight(CollectionStatistics collectionStats, TermStatistics... termStats) {
       return new SimWeight() {
 
         @Override
@@ -96,7 +96,7 @@ public class IndexSearcher {
         }
 
         @Override
-        public void normalize(float queryNorm, float topLevelBoost) {}
+        public void normalize(float queryNorm, float boost) {}
 
       };
     }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java Mon Sep  7 13:34:46 2015
@@ -216,7 +216,8 @@ public class LRUQueryCache implements Qu
   }
 
   synchronized DocIdSet get(Query key, LeafReaderContext context) {
-    key = QueryCache.cacheKey(key);
+    assert key instanceof BoostQuery == false;
+    assert key instanceof ConstantScoreQuery == false;
     final Object readerKey = context.reader().getCoreCacheKey();
     final LeafCache leafCache = cache.get(readerKey);
     if (leafCache == null) {
@@ -241,9 +242,8 @@ public class LRUQueryCache implements Qu
   synchronized void putIfAbsent(Query query, LeafReaderContext context, DocIdSet set) {
     // under a lock to make sure that mostRecentlyUsedQueries and cache remain sync'ed
     // we don't want to have user-provided queries as keys in our cache since queries are mutable
-    query = query.clone();
-    query.setBoost(1f);
-    assert query == QueryCache.cacheKey(query);
+    assert query instanceof BoostQuery == false;
+    assert query instanceof ConstantScoreQuery == false;
     Query singleton = uniqueQueries.putIfAbsent(query, query);
     if (singleton == null) {
       onQueryCache(singleton, LINKED_HASHTABLE_RAM_BYTES_PER_ENTRY + ramBytesUsed(query));
@@ -306,7 +306,7 @@ public class LRUQueryCache implements Qu
    * Remove all cache entries for the given query.
    */
   public synchronized void clearQuery(Query query) {
-    final Query singleton = uniqueQueries.remove(QueryCache.cacheKey(query));
+    final Query singleton = uniqueQueries.remove(query);
     if (singleton != null) {
       onEviction(singleton);
     }
@@ -510,12 +510,14 @@ public class LRUQueryCache implements Qu
     }
 
     DocIdSet get(Query query) {
-      assert query == QueryCache.cacheKey(query);
+      assert query instanceof BoostQuery == false;
+      assert query instanceof ConstantScoreQuery == false;
       return cache.get(query);
     }
 
     void putIfAbsent(Query query, DocIdSet set) {
-      assert query == QueryCache.cacheKey(query);
+      assert query instanceof BoostQuery == false;
+      assert query instanceof ConstantScoreQuery == false;
       if (cache.putIfAbsent(query, set) == null) {
         // the set was actually put
         onDocIdSetCache(HASHTABLE_RAM_BYTES_PER_ENTRY + set.ramBytesUsed());
@@ -523,7 +525,8 @@ public class LRUQueryCache implements Qu
     }
 
     void remove(Query query) {
-      assert query == QueryCache.cacheKey(query);
+      assert query instanceof BoostQuery == false;
+      assert query instanceof ConstantScoreQuery == false;
       DocIdSet removed = cache.remove(query);
       if (removed != null) {
         onDocIdSetEviction(HASHTABLE_RAM_BYTES_PER_ENTRY + removed.ramBytesUsed());

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java Mon Sep  7 13:34:46 2015
@@ -21,7 +21,6 @@ import java.io.IOException;
 
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * A query that matches all documents.
@@ -70,9 +69,6 @@ public final class MatchAllDocsQuery ext
 
   @Override
   public String toString(String field) {
-    StringBuilder buffer = new StringBuilder();
-    buffer.append("*:*");
-    buffer.append(ToStringUtils.boost(getBoost()));
-    return buffer.toString();
+    return "*:*";
   }
 }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java Mon Sep  7 13:34:46 2015
@@ -20,7 +20,6 @@ package org.apache.lucene.search;
 import java.io.IOException;
 
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * A query that matches no documents.
@@ -30,17 +29,11 @@ public class MatchNoDocsQuery extends Qu
     @Override
     public Query rewrite(IndexReader reader) throws IOException {
         // Rewrite to an empty BooleanQuery so no Scorer or Weight is required
-        BooleanQuery.Builder builder = new BooleanQuery.Builder();
-        Query rewritten = builder.build();
-        rewritten.setBoost(getBoost());
-        return rewritten;
+        return new BooleanQuery.Builder().build();
     }
 
     @Override
     public String toString(String field) {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append("");
-        buffer.append(ToStringUtils.boost(getBoost()));
-        return buffer.toString();
+        return "";
     }
 }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java Mon Sep  7 13:34:46 2015
@@ -35,7 +35,6 @@ import org.apache.lucene.search.similari
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.PriorityQueue;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * MultiPhraseQuery is a generalized version of PhraseQuery, with an added
@@ -147,7 +146,7 @@ public class MultiPhraseQuery extends Qu
           allTermStats.add(searcher.termStatistics(term, termContext));
         }
       }
-      stats = similarity.computeWeight(getBoost(),
+      stats = similarity.computeWeight(
           searcher.collectionStatistics(field), 
           allTermStats.toArray(new TermStatistics[allTermStats.size()]));
     }
@@ -167,8 +166,8 @@ public class MultiPhraseQuery extends Qu
     }
 
     @Override
-    public void normalize(float queryNorm, float topLevelBoost) {
-      stats.normalize(queryNorm, topLevelBoost);
+    public void normalize(float queryNorm, float boost) {
+      stats.normalize(queryNorm, boost);
     }
 
     @Override
@@ -251,11 +250,9 @@ public class MultiPhraseQuery extends Qu
   }
 
   @Override
-  public Query rewrite(IndexReader reader) {
+  public Query rewrite(IndexReader reader) throws IOException {
     if (termArrays.isEmpty()) {
-      MatchNoDocsQuery rewritten = new MatchNoDocsQuery();
-      rewritten.setBoost(getBoost());
-      return rewritten;
+      return new MatchNoDocsQuery();
     } else if (termArrays.size() == 1) {                 // optimize one-term case
       Term[] terms = termArrays.get(0);
       BooleanQuery.Builder builder = new BooleanQuery.Builder();
@@ -263,11 +260,9 @@ public class MultiPhraseQuery extends Qu
       for (int i=0; i<terms.length; i++) {
         builder.add(new TermQuery(terms[i]), BooleanClause.Occur.SHOULD);
       }
-      BooleanQuery boq = builder.build();
-      boq.setBoost(getBoost());
-      return boq;
+      return builder.build();
     } else {
-      return this;
+      return super.rewrite(reader);
     }
   }
 
@@ -322,8 +317,6 @@ public class MultiPhraseQuery extends Qu
       buffer.append(slop);
     }
 
-    buffer.append(ToStringUtils.boost(getBoost()));
-
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQuery.java Mon Sep  7 13:34:46 2015
@@ -94,9 +94,7 @@ public abstract class MultiTermQuery ext
   public static final RewriteMethod CONSTANT_SCORE_REWRITE = new RewriteMethod() {
     @Override
     public Query rewrite(IndexReader reader, MultiTermQuery query) {
-      Query result = new MultiTermQueryConstantScoreWrapper<>(query);
-      result.setBoost(query.getBoost());
-      return result;
+      return new MultiTermQueryConstantScoreWrapper<>(query);
     }
   };
 
@@ -172,8 +170,7 @@ public abstract class MultiTermQuery ext
     @Override
     protected void addClause(BooleanQuery.Builder topLevel, Term term, int docCount, float boost, TermContext states) {
       final TermQuery tq = new TermQuery(term, states);
-      tq.setBoost(boost);
-      topLevel.add(tq, BooleanClause.Occur.SHOULD);
+      topLevel.add(new BoostQuery(tq, boost), BooleanClause.Occur.SHOULD);
     }
   }
   
@@ -271,8 +268,7 @@ public abstract class MultiTermQuery ext
     @Override
     protected void addClause(BooleanQuery.Builder topLevel, Term term, int docFreq, float boost, TermContext states) {
       final Query q = new ConstantScoreQuery(new TermQuery(term, states));
-      q.setBoost(boost);
-      topLevel.add(q, BooleanClause.Occur.SHOULD);
+      topLevel.add(new BoostQuery(q, boost), BooleanClause.Occur.SHOULD);
     }
   }
 
@@ -337,7 +333,6 @@ public abstract class MultiTermQuery ext
   public int hashCode() {
     final int prime = 31;
     int result = 1;
-    result = prime * result + Float.floatToIntBits(getBoost());
     result = prime * result + rewriteMethod.hashCode();
     if (field != null) result = prime * result + field.hashCode();
     return result;

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryConstantScoreWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryConstantScoreWrapper.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryConstantScoreWrapper.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryConstantScoreWrapper.java Mon Sep  7 13:34:46 2015
@@ -96,7 +96,7 @@ final class MultiTermQueryConstantScoreW
       return false;
     }
     final MultiTermQueryConstantScoreWrapper<?> that = (MultiTermQueryConstantScoreWrapper<?>) o;
-    return this.query.equals(that.query) && this.getBoost() == that.getBoost();
+    return this.query.equals(that.query);
   }
 
   @Override
@@ -157,8 +157,9 @@ final class MultiTermQueryConstantScoreW
             bq.add(new TermQuery(new Term(query.field, t.term), termContext), Occur.SHOULD);
           }
           Query q = new ConstantScoreQuery(bq.build());
-          q.setBoost(score());
-          return new WeightOrDocIdSet(searcher.rewrite(q).createWeight(searcher, needsScores));
+          final Weight weight = searcher.rewrite(q).createWeight(searcher, needsScores);
+          weight.normalize(1f, score());
+          return new WeightOrDocIdSet(weight);
         }
 
         // Too many terms: go back to the terms we already collected and start building the bit set

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NGramPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NGramPhraseQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NGramPhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NGramPhraseQuery.java Mon Sep  7 13:34:46 2015
@@ -74,9 +74,7 @@ public class NGramPhraseQuery extends Qu
         builder.add(terms[i], i);
       }
     }
-    PhraseQuery rewritten = builder.build();
-    rewritten.setBoost(phraseQuery.getBoost());
-    return rewritten;
+    return builder.build();
   }
 
   @Override
@@ -107,16 +105,6 @@ public class NGramPhraseQuery extends Qu
   }
 
   @Override
-  public float getBoost() {
-    return phraseQuery.getBoost();
-  }
-
-  @Override
-  public void setBoost(float b) {
-    phraseQuery.setBoost(b);
-  }
-
-  @Override
   public String toString(String field) {
     return phraseQuery.toString(field);
   }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java Mon Sep  7 13:34:46 2015
@@ -33,7 +33,6 @@ import org.apache.lucene.index.TermsEnum
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.NumericUtils;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.index.Term; // for javadocs
 
 /**
@@ -324,7 +323,6 @@ public final class NumericRangeQuery<T e
       .append(" TO ")
       .append((max == null) ? "*" : max.toString())
       .append(maxInclusive ? ']' : '}')
-      .append(ToStringUtils.boost(getBoost()))
       .toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java Mon Sep  7 13:34:46 2015
@@ -38,7 +38,6 @@ import org.apache.lucene.search.similari
 import org.apache.lucene.search.similarities.Similarity.SimScorer;
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.ToStringUtils;
 
 /** A Query that matches documents containing a particular sequence of terms.
  * A PhraseQuery is built by QueryParser for input like <code>"new york"</code>.
@@ -265,21 +264,15 @@ public class PhraseQuery extends Query {
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
     if (terms.length == 0) {
-      MatchNoDocsQuery q = new MatchNoDocsQuery();
-      q.setBoost(getBoost());
-      return q;
+      return new MatchNoDocsQuery();
     } else if (terms.length == 1) {
-      TermQuery tq = new TermQuery(terms[0]);
-      tq.setBoost(getBoost());
-      return tq;
+      return new TermQuery(terms[0]);
     } else if (positions[0] != 0) {
       int[] newPositions = new int[positions.length];
       for (int i = 0; i < positions.length; ++i) {
         newPositions[i] = positions[i] - positions[0];
       }
-      PhraseQuery rewritten = new PhraseQuery(slop, terms, newPositions);
-      rewritten.setBoost(getBoost());
-      return rewritten;
+      return new PhraseQuery(slop, terms, newPositions);
     } else {
       return super.rewrite(reader);
     }
@@ -375,7 +368,7 @@ public class PhraseQuery extends Query {
         states[i] = TermContext.build(context, term);
         termStats[i] = searcher.termStatistics(term, states[i]);
       }
-      stats = similarity.computeWeight(getBoost(), searcher.collectionStatistics(field), termStats);
+      stats = similarity.computeWeight(searcher.collectionStatistics(field), termStats);
     }
 
     @Override
@@ -392,8 +385,8 @@ public class PhraseQuery extends Query {
     }
 
     @Override
-    public void normalize(float queryNorm, float topLevelBoost) {
-      stats.normalize(queryNorm, topLevelBoost);
+    public void normalize(float queryNorm, float boost) {
+      stats.normalize(queryNorm, boost);
     }
 
     @Override
@@ -514,8 +507,6 @@ public class PhraseQuery extends Query {
       buffer.append(slop);
     }
 
-    buffer.append(ToStringUtils.boost(getBoost()));
-
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PrefixQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PrefixQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PrefixQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PrefixQuery.java Mon Sep  7 13:34:46 2015
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
 
 import org.apache.lucene.index.Term;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.automaton.Automaton;
 
 /** A Query that matches documents containing terms with a specified prefix. A PrefixQuery
@@ -71,7 +70,6 @@ public class PrefixQuery extends Automat
     }
     buffer.append(term.text());
     buffer.append('*');
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Query.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Query.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Query.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/Query.java Mon Sep  7 13:34:46 2015
@@ -41,20 +41,7 @@ import org.apache.lucene.index.IndexRead
     <p>See also the family of {@link org.apache.lucene.search.spans Span Queries}
        and additional queries available in the <a href="{@docRoot}/../queries/overview-summary.html">Queries module</a>
 */
-public abstract class Query implements Cloneable {
-  private float boost = 1.0f;                     // query boost factor
-
-  /** Sets the boost for this query clause to <code>b</code>.  Documents
-   * matching this clause will (in addition to the normal weightings) have
-   * their score multiplied by <code>b</code>.
-   */
-  public void setBoost(float b) { boost = b; }
-
-  /** Gets the boost for this clause.  Documents matching
-   * this clause will (in addition to the normal weightings) have their score
-   * multiplied by <code>b</code>.   The boost is 1.0 by default.
-   */
-  public float getBoost() { return boost; }
+public abstract class Query {
 
   /** Prints a query to a string, with <code>field</code> assumed to be the 
    * default field and omitted.
@@ -87,19 +74,9 @@ public abstract class Query implements C
     return this;
   }
 
-  /** Returns a clone of this query. */
-  @Override
-  public Query clone() {
-    try {
-      return (Query)super.clone();
-    } catch (CloneNotSupportedException e) {
-      throw new RuntimeException("Clone not supported: " + e.getMessage());
-    }
-  }
-
   @Override
   public int hashCode() {
-    return Float.floatToIntBits(getBoost()) ^ getClass().hashCode();
+    return getClass().hashCode();
   }
 
   @Override
@@ -110,9 +87,6 @@ public abstract class Query implements C
       return false;
     if (getClass() != obj.getClass())
       return false;
-    Query other = (Query) obj;
-    if (Float.floatToIntBits(boost) != Float.floatToIntBits(other.boost))
-      return false;
     return true;
   }
 }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryCache.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryCache.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryCache.java Mon Sep  7 13:34:46 2015
@@ -26,22 +26,6 @@ package org.apache.lucene.search;
 public interface QueryCache {
 
   /**
-   * Return a key for the given query that only takes matching documents into
-   * account. Boosts will be ignored.
-   * @lucene.internal
-   */
-  public static Query cacheKey(Query query) {
-    if (query.getBoost() == 1f) {
-      return query;
-    } else {
-      Query key = query.clone();
-      key.setBoost(1f);
-      assert key == cacheKey(key);
-      return key;
-    }
-  }
-
-  /**
    * Return a wrapper around the provided <code>weight</code> that will cache
    * matching docs per-segment accordingly to the given <code>policy</code>.
    * NOTE: The returned weight will only be equivalent if scores are not needed.

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java Mon Sep  7 13:34:46 2015
@@ -46,9 +46,7 @@ public class QueryWrapperFilter extends
   
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
-    ConstantScoreQuery rewritten = new ConstantScoreQuery(query);
-    rewritten.setBoost(0);
-    return rewritten;
+    return new BoostQuery(new ConstantScoreQuery(query), 0f);
   }
   
   /** returns the inner Query */

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java Mon Sep  7 13:34:46 2015
@@ -121,7 +121,6 @@ public class RegexpQuery extends Automat
     buffer.append('/');
     buffer.append(term.text());
     buffer.append('/');
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
 }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java Mon Sep  7 13:34:46 2015
@@ -69,8 +69,7 @@ public abstract class ScoringRewrite<B>
     protected void addClause(BooleanQuery.Builder topLevel, Term term, int docCount,
         float boost, TermContext states) {
       final TermQuery tq = new TermQuery(term, states);
-      tq.setBoost(boost);
-      topLevel.add(tq, BooleanClause.Occur.SHOULD);
+      topLevel.add(new BoostQuery(tq, boost), BooleanClause.Occur.SHOULD);
     }
     
     @Override
@@ -95,9 +94,7 @@ public abstract class ScoringRewrite<B>
     public Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException {
       final Query bq = SCORING_BOOLEAN_REWRITE.rewrite(reader, query);
       // strip the scores off
-      final Query result = new ConstantScoreQuery(bq);
-      result.setBoost(query.getBoost());
-      return result;
+      return new ConstantScoreQuery(bq);
     }
   };
 
@@ -120,7 +117,7 @@ public abstract class ScoringRewrite<B>
         final int pos = sort[i];
         final Term term = new Term(query.getField(), col.terms.get(pos, new BytesRef()));
         assert termStates[pos].hasOnlyRealTerms() == false || reader.docFreq(term) == termStates[pos].docFreq();
-        addClause(builder, term, termStates[pos].docFreq(), query.getBoost() * boost[pos], termStates[pos]);
+        addClause(builder, term, termStates[pos].docFreq(), boost[pos], termStates[pos]);
       }
     }
     return build(builder);

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java Mon Sep  7 13:34:46 2015
@@ -32,7 +32,6 @@ import org.apache.lucene.index.TermState
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.search.similarities.Similarity.SimScorer;
-import org.apache.lucene.util.ToStringUtils;
 
 /**
  * A Query that matches documents containing a term. This may be combined with
@@ -73,7 +72,7 @@ public class TermQuery extends Query {
         termStats = new TermStatistics(term.bytes(), docFreq, totalTermFreq);
       }
      
-      this.stats = similarity.computeWeight(getBoost(), collectionStats, termStats);
+      this.stats = similarity.computeWeight(collectionStats, termStats);
     }
 
     @Override
@@ -92,8 +91,8 @@ public class TermQuery extends Query {
     }
 
     @Override
-    public void normalize(float queryNorm, float topLevelBoost) {
-      stats.normalize(queryNorm, topLevelBoost);
+    public void normalize(float queryNorm, float boost) {
+      stats.normalize(queryNorm, boost);
     }
 
     @Override
@@ -207,7 +206,6 @@ public class TermQuery extends Query {
       buffer.append(":");
     }
     buffer.append(term.text());
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermRangeQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermRangeQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermRangeQuery.java Mon Sep  7 13:34:46 2015
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
 
 import org.apache.lucene.index.Term;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.lucene.util.automaton.Automata;
 import org.apache.lucene.util.automaton.Automaton;
 
@@ -121,7 +120,6 @@ public class TermRangeQuery extends Auto
     buffer.append(" TO ");
     buffer.append(upperTerm != null ? ("*".equals(Term.toString(upperTerm)) ? "\\*" : Term.toString(upperTerm)) : "*");
     buffer.append(includeUpper ? ']' : '}');
-    buffer.append(ToStringUtils.boost(getBoost()));
     return buffer.toString();
   }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java Mon Sep  7 13:34:46 2015
@@ -160,7 +160,7 @@ public abstract class TopTermsRewrite<B>
 
     for (final ScoreTerm st : scoreTerms) {
       final Term term = new Term(query.field, st.bytes.toBytesRef());
-      addClause(b, term, st.termState.docFreq(), query.getBoost() * st.boost, st.termState); // add to query
+      addClause(b, term, st.termState.docFreq(), st.boost, st.termState); // add to query
     }
     return build(b);
   }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java Mon Sep  7 13:34:46 2015
@@ -98,9 +98,12 @@ public final class UsageTrackingQueryCac
 
   @Override
   public void onUse(Query query) {
-    // call possible Query clone and hashCode outside of sync block
+    assert query instanceof BoostQuery == false;
+    assert query instanceof ConstantScoreQuery == false;
+
+    // call hashCode outside of sync block
     // in case it's somewhat expensive:
-    int hashCode = QueryCache.cacheKey(query).hashCode();
+    int hashCode = query.hashCode();
 
     // we only track hash codes to avoid holding references to possible
     // large queries; this may cause rare false positives, but at worse
@@ -111,10 +114,12 @@ public final class UsageTrackingQueryCac
   }
 
   int frequency(Query query) {
-    
-    // call possible Query clone and hashCode outside of sync block
+    assert query instanceof BoostQuery == false;
+    assert query instanceof ConstantScoreQuery == false;
+
+    // call hashCode outside of sync block
     // in case it's somewhat expensive:
-    int hashCode = QueryCache.cacheKey(query).hashCode();
+    int hashCode = query.hashCode();
 
     synchronized (this) {
       return recentlyUsedFilters.frequency(hashCode);