@@ -1590,14 +1590,18 @@ export class Indexer {
15901590 return candidates ;
15911591 }
15921592
1593- if ( options ?. definitionIntent === true || options ?. hasIdentifierHints === true ) {
1594- return candidates ;
1595- }
1596-
15971593 const queryTokens = Array . from ( tokenizeTextForRanking ( query ) ) ;
15981594 const preferSourcePaths = classifyQueryIntentRaw ( query ) === "source" ;
15991595 const docIntent = classifyDocIntent ( queryTokens ) === "docs" ;
16001596
1597+ if ( options ?. definitionIntent === true ) {
1598+ return candidates ;
1599+ }
1600+
1601+ if ( options ?. hasIdentifierHints === true && preferSourcePaths && ! docIntent ) {
1602+ return candidates ;
1603+ }
1604+
16011605 const topN = Math . min ( reranker . topN , candidates . length ) ;
16021606 const head = candidates . slice ( 0 , topN ) ;
16031607 const tail = candidates . slice ( topN ) ;
@@ -2867,70 +2871,7 @@ export class Indexer {
28672871 : baseFiltered
28682872 ) . slice ( 0 , maxResults ) ;
28692873
2870- // Apply reranking if enabled and available
2871- let finalResults = filtered ;
2872- if ( this . reranker ?. isAvailable ( ) && filtered . length > 1 ) {
2873- const rerankStartTime = performance . now ( ) ;
2874-
2875- // Read content for reranking
2876- const documentsForRerank = await Promise . all (
2877- filtered . map ( async ( r ) => {
2878- try {
2879- const fileContent = await fsPromises . readFile ( r . metadata . filePath , "utf-8" ) ;
2880- const lines = fileContent . split ( "\n" ) ;
2881- return lines . slice ( r . metadata . startLine - 1 , r . metadata . endLine ) . join ( "\n" ) ;
2882- } catch {
2883- return r . metadata . name ?? r . metadata . chunkType ;
2884- }
2885- } )
2886- ) ;
2887-
2888- try {
2889- const rerankResponse = await this . reranker . rerank (
2890- query ,
2891- documentsForRerank ,
2892- this . config . reranker ?. topN ?? filtered . length
2893- ) ;
2894-
2895- if ( rerankResponse . results . length > 0 ) {
2896- // Create a map of original index to rerank score
2897- const rerankScores = new Map < number , number > ( ) ;
2898- for ( const result of rerankResponse . results ) {
2899- rerankScores . set ( result . index , result . relevanceScore ) ;
2900- }
2901-
2902- // Reorder results based on rerank scores
2903- const rerankedIndices = rerankResponse . results
2904- . sort ( ( a , b ) => b . relevanceScore - a . relevanceScore )
2905- . map ( r => r . index ) ;
2906-
2907- // Build final results: reranked first, then remaining
2908- const rerankedSet = new Set ( rerankedIndices ) ;
2909- const reranked = rerankedIndices
2910- . filter ( idx => idx < filtered . length )
2911- . map ( idx => ( {
2912- ...filtered [ idx ] ,
2913- score : rerankScores . get ( idx ) ?? filtered [ idx ] . score ,
2914- } ) ) ;
2915- const remaining = filtered
2916- . filter ( ( _ , idx ) => ! rerankedSet . has ( idx ) ) ;
2917-
2918- finalResults = [ ...reranked , ...remaining ] . slice ( 0 , maxResults ) ;
2919- }
2920-
2921- const rerankMs = performance . now ( ) - rerankStartTime ;
2922- this . logger . search ( "debug" , "Reranking complete" , {
2923- documentsReranked : documentsForRerank . length ,
2924- rerankMs : Math . round ( rerankMs * 100 ) / 100 ,
2925- tokensUsed : rerankResponse . tokensUsed ,
2926- } ) ;
2927- } catch ( error ) {
2928- // Reranking failed, use original results
2929- this . logger . search ( "warn" , "Reranking failed, using original results" , {
2930- error : error instanceof Error ? error . message : String ( error ) ,
2931- } ) ;
2932- }
2933- }
2874+ const finalResults = filtered ;
29342875
29352876 const totalSearchMs = performance . now ( ) - searchStartTime ;
29362877 this . logger . recordSearch ( totalSearchMs , {
0 commit comments