github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/search/query.go (about)

     1  package search
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/balzaczyy/golucene/core/index"
     6  )
     7  
     8  // search/Query.java
     9  
    10  /*
    11  The abstract base class for queries.
    12  */
    13  type Query interface {
    14  	SetBoost(b float32)
    15  	Boost() float32
    16  	QuerySPI
    17  	CreateWeight(ss *IndexSearcher) (w Weight, err error)
    18  	Rewrite(r index.IndexReader) Query
    19  }
    20  
    21  type QuerySPI interface {
    22  	ToString(string) string
    23  }
    24  
    25  type AbstractQuery struct {
    26  	spi   QuerySPI
    27  	value Query
    28  	boost float32
    29  }
    30  
    31  func NewAbstractQuery(self interface{}) *AbstractQuery {
    32  	return &AbstractQuery{
    33  		spi:   self.(QuerySPI),
    34  		value: self.(Query),
    35  		boost: 1.0,
    36  	}
    37  }
    38  
    39  func (q *AbstractQuery) SetBoost(b float32) { q.boost = b }
    40  func (q *AbstractQuery) Boost() float32     { return q.boost }
    41  
    42  func (q *AbstractQuery) String() string { return q.spi.ToString("") }
    43  
    44  func (q *AbstractQuery) CreateWeight(ss *IndexSearcher) (w Weight, err error) {
    45  	panic(fmt.Sprintf("Query %v does not implement createWeight", q))
    46  }
    47  
    48  func (q *AbstractQuery) Rewrite(r index.IndexReader) Query {
    49  	return q.value
    50  }