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 }