refactored boolean query to only depend on query
This commit is contained in:
parent
77c998a7a2
commit
607b038283
@ -20,11 +20,19 @@ type BooleanQuery struct {
|
||||
BoostVal float64 `json:"boost,omitempty"`
|
||||
}
|
||||
|
||||
func NewBooleanQuery(must *ConjunctionQuery, should *DisjunctionQuery, mustNot *DisjunctionQuery) *BooleanQuery {
|
||||
func NewBooleanQuery(must []Query, should []Query, mustNot []Query) *BooleanQuery {
|
||||
min := 0.0
|
||||
if len(should) > 0 {
|
||||
min = 1.0
|
||||
}
|
||||
return NewBooleanQueryMinShould(must, should, mustNot, min)
|
||||
}
|
||||
|
||||
func NewBooleanQueryMinShould(must []Query, should []Query, mustNot []Query, minShould float64) *BooleanQuery {
|
||||
return &BooleanQuery{
|
||||
Must: must,
|
||||
Should: should,
|
||||
MustNot: mustNot,
|
||||
Must: NewConjunctionQuery(must),
|
||||
Should: NewDisjunctionQueryMin(should, minShould),
|
||||
MustNot: NewDisjunctionQuery(mustNot),
|
||||
BoostVal: 1.0,
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,9 @@ type ConjunctionQuery struct {
|
||||
}
|
||||
|
||||
func NewConjunctionQuery(conjuncts []Query) *ConjunctionQuery {
|
||||
if len(conjuncts) == 0 {
|
||||
return nil
|
||||
}
|
||||
return &ConjunctionQuery{
|
||||
Conjuncts: conjuncts,
|
||||
BoostVal: 1.0,
|
||||
|
@ -22,12 +22,26 @@ type DisjunctionQuery struct {
|
||||
}
|
||||
|
||||
func NewDisjunctionQuery(disjuncts []Query) *DisjunctionQuery {
|
||||
if len(disjuncts) == 0 {
|
||||
return nil
|
||||
}
|
||||
return &DisjunctionQuery{
|
||||
Disjuncts: disjuncts,
|
||||
BoostVal: 1.0,
|
||||
}
|
||||
}
|
||||
|
||||
func NewDisjunctionQueryMin(disjuncts []Query, min float64) *DisjunctionQuery {
|
||||
if len(disjuncts) == 0 {
|
||||
return nil
|
||||
}
|
||||
return &DisjunctionQuery{
|
||||
Disjuncts: disjuncts,
|
||||
BoostVal: 1.0,
|
||||
MinVal: min,
|
||||
}
|
||||
}
|
||||
|
||||
func (q *DisjunctionQuery) Boost() float64 {
|
||||
return q.BoostVal
|
||||
}
|
||||
|
@ -23,37 +23,16 @@ a = make([]family, 1)
|
||||
{
|
||||
var acc [18]bool
|
||||
var fun [18]func(rune) int
|
||||
fun[15] = func(r rune) int {
|
||||
fun[10] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 16
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 16
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 16
|
||||
case 65 <= r && r <= 70: return 16
|
||||
case 97 <= r && r <= 102: return 16
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[2] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
default:
|
||||
switch {
|
||||
@ -65,17 +44,59 @@ fun[2] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[7] = func(r rune) int {
|
||||
fun[9] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 5
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[4] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 5
|
||||
case 114: return 6
|
||||
case 92: return 7
|
||||
case 116: return 8
|
||||
case 102: return 9
|
||||
case 110: return 10
|
||||
case 34: return 11
|
||||
case 47: return 12
|
||||
case 98: return 13
|
||||
case 116: return 7
|
||||
case 98: return 8
|
||||
case 110: return 9
|
||||
case 47: return 10
|
||||
case 102: return 11
|
||||
case 92: return 12
|
||||
case 117: return 13
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[12] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 47: return 10
|
||||
case 102: return 11
|
||||
case 92: return 12
|
||||
case 117: return 13
|
||||
case 34: return 5
|
||||
case 114: return 6
|
||||
case 116: return 7
|
||||
case 98: return 8
|
||||
case 110: return 9
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -88,15 +109,36 @@ fun[7] = func(r rune) int {
|
||||
}
|
||||
fun[13] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 102: return 14
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 14
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 14
|
||||
case 65 <= r && r <= 70: return 14
|
||||
case 97 <= r && r <= 102: return 14
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[17] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -109,15 +151,15 @@ fun[13] = func(r rune) int {
|
||||
}
|
||||
fun[16] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 17
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 17
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 17
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 17
|
||||
@ -128,59 +170,17 @@ fun[16] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[8] = func(r rune) int {
|
||||
fun[2] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return -1
|
||||
case 114: return -1
|
||||
case 92: return -1
|
||||
case 116: return -1
|
||||
case 102: return -1
|
||||
case 110: return -1
|
||||
case 34: return 1
|
||||
case 47: return -1
|
||||
case 98: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return -1
|
||||
case 65 <= r && r <= 70: return -1
|
||||
case 97 <= r && r <= 102: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[3] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 5
|
||||
case 114: return 6
|
||||
case 92: return 7
|
||||
case 116: return 8
|
||||
case 102: return 9
|
||||
case 110: return 10
|
||||
case 34: return 11
|
||||
case 47: return 12
|
||||
case 98: return 13
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -193,15 +193,15 @@ fun[3] = func(r rune) int {
|
||||
}
|
||||
fun[14] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 102: return 15
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 15
|
||||
case 102: return 15
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 98: return 15
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 15
|
||||
@ -212,60 +212,17 @@ fun[14] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[4] = true
|
||||
fun[4] = func(r rune) int {
|
||||
fun[7] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 102: return -1
|
||||
case 110: return -1
|
||||
case 34: return -1
|
||||
case 47: return -1
|
||||
case 98: return -1
|
||||
case 117: return -1
|
||||
case 114: return -1
|
||||
case 92: return -1
|
||||
case 116: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return -1
|
||||
case 65 <= r && r <= 70: return -1
|
||||
case 97 <= r && r <= 102: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[5] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 102: return 14
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 14
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 14
|
||||
case 65 <= r && r <= 70: return 14
|
||||
case 97 <= r && r <= 102: return 14
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[10] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -276,17 +233,124 @@ fun[10] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[11] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[8] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[15] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 16
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 16
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 16
|
||||
case 65 <= r && r <= 70: return 16
|
||||
case 97 <= r && r <= 102: return 16
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[6] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[3] = true
|
||||
fun[3] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 114: return -1
|
||||
case 116: return -1
|
||||
case 98: return -1
|
||||
case 110: return -1
|
||||
case 47: return -1
|
||||
case 102: return -1
|
||||
case 92: return -1
|
||||
case 117: return -1
|
||||
case 34: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return -1
|
||||
case 65 <= r && r <= 70: return -1
|
||||
case 97 <= r && r <= 102: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[5] = true
|
||||
fun[5] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 116: return 2
|
||||
case 98: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -300,14 +364,14 @@ fun[6] = func(r rune) int {
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 2
|
||||
case 34: return 3
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 110: return 2
|
||||
case 47: return 2
|
||||
case 102: return 2
|
||||
case 92: return 4
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
@ -318,87 +382,23 @@ fun[1] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[9] = func(r rune) int {
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 110: return -1
|
||||
case 47: return -1
|
||||
case 102: return -1
|
||||
case 92: return -1
|
||||
case 117: return -1
|
||||
case 34: return 1
|
||||
case 114: return -1
|
||||
case 116: return -1
|
||||
case 98: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[11] = true
|
||||
fun[11] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[17] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[12] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 116: return 2
|
||||
case 102: return 2
|
||||
case 110: return 2
|
||||
case 34: return 4
|
||||
case 47: return 2
|
||||
case 98: return 2
|
||||
case 117: return 2
|
||||
case 114: return 2
|
||||
case 92: return 3
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 57: return 2
|
||||
case 65 <= r && r <= 70: return 2
|
||||
case 97 <= r && r <= 102: return 2
|
||||
default: return 2
|
||||
case 48 <= r && r <= 57: return -1
|
||||
case 65 <= r && r <= 70: return -1
|
||||
case 97 <= r && r <= 102: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
@ -438,9 +438,10 @@ a0[1].id = 1
|
||||
{
|
||||
var acc [2]bool
|
||||
var fun [2]func(rune) int
|
||||
fun[0] = func(r rune) int {
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return 1
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -448,10 +449,9 @@ fun[0] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return -1
|
||||
case 45: return 1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -550,10 +550,9 @@ a0[5].id = 5
|
||||
{
|
||||
var acc [2]bool
|
||||
var fun [2]func(rune) int
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 41: return -1
|
||||
case 41: return 1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -561,9 +560,10 @@ fun[1] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[0] = func(r rune) int {
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 41: return 1
|
||||
case 41: return -1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -662,10 +662,37 @@ a0[9].id = 9
|
||||
{
|
||||
var acc [8]bool
|
||||
var fun [8]func(rune) int
|
||||
fun[0] = func(r rune) int {
|
||||
acc[2] = true
|
||||
fun[2] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return 1
|
||||
case 46: return 4
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return -1
|
||||
case 49 <= r && r <= 57: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[4] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return -1
|
||||
case 46: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 6
|
||||
case 49 <= r && r <= 57: return 6
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 46: return -1
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 2
|
||||
@ -678,8 +705,8 @@ fun[0] = func(r rune) int {
|
||||
acc[3] = true
|
||||
fun[3] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return -1
|
||||
case 46: return 4
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 5
|
||||
@ -689,37 +716,24 @@ fun[3] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[4] = func(r rune) int {
|
||||
acc[6] = true
|
||||
fun[6] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 46: return -1
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 6
|
||||
case 49 <= r && r <= 57: return 6
|
||||
case 48 <= r && r <= 48: return 7
|
||||
case 49 <= r && r <= 57: return 7
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[2] = true
|
||||
fun[2] = func(r rune) int {
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return -1
|
||||
case 46: return 4
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return -1
|
||||
case 49 <= r && r <= 57: return -1
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 45: return -1
|
||||
case 46: return -1
|
||||
case 45: return 1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 2
|
||||
@ -729,20 +743,6 @@ fun[1] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[5] = true
|
||||
fun[5] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 46: return 4
|
||||
case 45: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 5
|
||||
case 49 <= r && r <= 57: return 5
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[7] = true
|
||||
fun[7] = func(r rune) int {
|
||||
switch(r) {
|
||||
@ -757,15 +757,15 @@ fun[7] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
acc[6] = true
|
||||
fun[6] = func(r rune) int {
|
||||
acc[5] = true
|
||||
fun[5] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 46: return 4
|
||||
case 45: return -1
|
||||
case 46: return -1
|
||||
default:
|
||||
switch {
|
||||
case 48 <= r && r <= 48: return 7
|
||||
case 49 <= r && r <= 57: return 7
|
||||
case 48 <= r && r <= 48: return 5
|
||||
case 49 <= r && r <= 57: return 5
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
@ -778,12 +778,11 @@ a0[10].id = 10
|
||||
{
|
||||
var acc [2]bool
|
||||
var fun [2]func(rune) int
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 32: return 1
|
||||
case 9: return 1
|
||||
case 10: return 1
|
||||
case 9: return 1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -791,11 +790,12 @@ fun[1] = func(r rune) int {
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
fun[0] = func(r rune) int {
|
||||
acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 9: return 1
|
||||
case 10: return 1
|
||||
case 32: return 1
|
||||
case 10: return 1
|
||||
case 9: return 1
|
||||
default:
|
||||
switch {
|
||||
default: return -1
|
||||
@ -814,17 +814,17 @@ acc[1] = true
|
||||
fun[1] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 60: return -1
|
||||
case 62: return -1
|
||||
case 45: return -1
|
||||
case 94: return -1
|
||||
case 32: return -1
|
||||
case 10: return -1
|
||||
case 9: return -1
|
||||
case 13: return -1
|
||||
case 58: return -1
|
||||
case 12: return -1
|
||||
case 32: return -1
|
||||
case 94: return -1
|
||||
case 43: return -1
|
||||
case 9: return -1
|
||||
case 58: return -1
|
||||
case 10: return -1
|
||||
case 45: return -1
|
||||
case 61: return -1
|
||||
case 62: return -1
|
||||
default:
|
||||
switch {
|
||||
default: return 1
|
||||
@ -834,18 +834,18 @@ fun[1] = func(r rune) int {
|
||||
}
|
||||
fun[0] = func(r rune) int {
|
||||
switch(r) {
|
||||
case 58: return -1
|
||||
case 12: return -1
|
||||
case 43: return -1
|
||||
case 61: return -1
|
||||
case 60: return -1
|
||||
case 62: return -1
|
||||
case 45: return -1
|
||||
case 94: return -1
|
||||
case 32: return -1
|
||||
case 10: return -1
|
||||
case 9: return -1
|
||||
case 13: return -1
|
||||
case 12: return -1
|
||||
case 32: return -1
|
||||
case 94: return -1
|
||||
case 43: return -1
|
||||
case 9: return -1
|
||||
case 58: return -1
|
||||
case 10: return -1
|
||||
case 45: return -1
|
||||
case 61: return -1
|
||||
case 62: return -1
|
||||
case 60: return -1
|
||||
default:
|
||||
switch {
|
||||
default: return 1
|
||||
|
@ -63,32 +63,14 @@ tSTRING {
|
||||
str := $1.s
|
||||
logDebugGrammar("STRING - %s", str)
|
||||
q := NewMatchQuery(str)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tPHRASE {
|
||||
phrase := $1.s
|
||||
logDebugGrammar("PHRASE - %s", phrase)
|
||||
q := NewMatchPhraseQuery(phrase)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tSTRING {
|
||||
@ -96,16 +78,7 @@ tSTRING tCOLON tSTRING {
|
||||
str := $3.s
|
||||
logDebugGrammar("FIELD - %s STRING - %s", field, str)
|
||||
q := NewMatchQuery(str).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tPHRASE {
|
||||
@ -113,16 +86,7 @@ tSTRING tCOLON tPHRASE {
|
||||
phrase := $3.s
|
||||
logDebugGrammar("FIELD - %s PHRASE - %s", field, phrase)
|
||||
q := NewMatchPhraseQuery(phrase).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tGREATER tNUMBER {
|
||||
@ -131,16 +95,7 @@ tSTRING tCOLON tGREATER tNUMBER {
|
||||
minInclusive := false
|
||||
logDebugGrammar("FIELD - GREATER THAN %f", min)
|
||||
q := NewNumericRangeInclusiveQuery(&min, nil, &minInclusive, nil).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tGREATER tEQUAL tNUMBER {
|
||||
@ -149,16 +104,7 @@ tSTRING tCOLON tGREATER tEQUAL tNUMBER {
|
||||
minInclusive := true
|
||||
logDebugGrammar("FIELD - GREATER THAN OR EQUAL %f", min)
|
||||
q := NewNumericRangeInclusiveQuery(&min, nil, &minInclusive, nil).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tLESS tNUMBER {
|
||||
@ -167,16 +113,7 @@ tSTRING tCOLON tLESS tNUMBER {
|
||||
maxInclusive := false
|
||||
logDebugGrammar("FIELD - LESS THAN %f", max)
|
||||
q := NewNumericRangeInclusiveQuery(nil, &max, nil, &maxInclusive).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
|
|
||||
tSTRING tCOLON tLESS tEQUAL tNUMBER {
|
||||
@ -185,16 +122,7 @@ tSTRING tCOLON tLESS tEQUAL tNUMBER {
|
||||
maxInclusive := true
|
||||
logDebugGrammar("FIELD - LESS THAN OR EQUAL %f", max)
|
||||
q := NewNumericRangeInclusiveQuery(nil, &max, nil, &maxInclusive).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
};
|
||||
|
||||
|
||||
|
@ -23,9 +23,9 @@ var debugParser bool
|
||||
var debugLexer bool
|
||||
|
||||
var parsingLastQuery Query
|
||||
var parsingMustList *ConjunctionQuery
|
||||
var parsingMustNotList *DisjunctionQuery
|
||||
var parsingShouldList *DisjunctionQuery
|
||||
var parsingMustList []Query
|
||||
var parsingMustNotList []Query
|
||||
var parsingShouldList []Query
|
||||
var parsingIndexMapping *IndexMapping
|
||||
|
||||
func ParseQuerySyntax(query string, mapping *IndexMapping) (rq Query, err error) {
|
||||
@ -33,9 +33,9 @@ func ParseQuerySyntax(query string, mapping *IndexMapping) (rq Query, err error)
|
||||
defer parserMutex.Unlock()
|
||||
|
||||
parsingIndexMapping = mapping
|
||||
parsingMustList = NewConjunctionQuery([]Query{})
|
||||
parsingMustNotList = NewDisjunctionQuery([]Query{})
|
||||
parsingShouldList = NewDisjunctionQuery([]Query{})
|
||||
parsingMustList = make([]Query, 0)
|
||||
parsingMustNotList = make([]Query, 0)
|
||||
parsingShouldList = make([]Query, 0)
|
||||
|
||||
defer func() {
|
||||
r := recover()
|
||||
@ -53,16 +53,19 @@ func ParseQuerySyntax(query string, mapping *IndexMapping) (rq Query, err error)
|
||||
}()
|
||||
|
||||
yyParse(NewLexer(strings.NewReader(query)))
|
||||
parsingQuery := NewBooleanQuery(nil, nil, nil)
|
||||
if len(parsingMustList.Conjuncts) > 0 {
|
||||
parsingQuery.Must = parsingMustList
|
||||
}
|
||||
if len(parsingMustNotList.Disjuncts) > 0 {
|
||||
parsingQuery.MustNot = parsingMustNotList
|
||||
}
|
||||
if len(parsingShouldList.Disjuncts) > 0 {
|
||||
parsingQuery.Should = parsingShouldList
|
||||
}
|
||||
rq = parsingQuery
|
||||
rq = NewBooleanQuery(parsingMustList, parsingShouldList, parsingMustNotList)
|
||||
return rq, err
|
||||
}
|
||||
|
||||
func addQueryToList(q Query) {
|
||||
if parsingMust {
|
||||
parsingMustList = append(parsingMustList, q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList = append(parsingMustNotList, q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList = append(parsingShouldList, q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
}
|
||||
|
@ -26,10 +26,9 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchQuery("test"),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
{
|
||||
@ -37,10 +36,9 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 1"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 1"),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
{
|
||||
@ -48,20 +46,18 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetField("field"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetField("field"),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
{
|
||||
input: "+field1:test1",
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
NewConjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test1").SetField("field1"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchQuery("test1").SetField("field1"),
|
||||
},
|
||||
nil,
|
||||
nil),
|
||||
},
|
||||
@ -71,30 +67,27 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test2").SetField("field2"),
|
||||
})),
|
||||
[]Query{
|
||||
NewMatchQuery("test2").SetField("field2"),
|
||||
}),
|
||||
},
|
||||
{
|
||||
input: `field3:"test phrase 2"`,
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 2").SetField("field3"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 2").SetField("field3"),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
{
|
||||
input: `+field4:"test phrase 1"`,
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
NewConjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 1").SetField("field4"),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 1").SetField("field4"),
|
||||
},
|
||||
nil,
|
||||
nil),
|
||||
},
|
||||
@ -104,37 +97,32 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 2").SetField("field5"),
|
||||
})),
|
||||
[]Query{
|
||||
NewMatchPhraseQuery("test phrase 2").SetField("field5"),
|
||||
}),
|
||||
},
|
||||
{
|
||||
input: `+field6:test3 -field7:test4 field8:test5`,
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
NewConjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test3").SetField("field6"),
|
||||
}),
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test5").SetField("field8"),
|
||||
}),
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test4").SetField("field7"),
|
||||
})),
|
||||
[]Query{
|
||||
NewMatchQuery("test3").SetField("field6"),
|
||||
},
|
||||
[]Query{
|
||||
NewMatchQuery("test5").SetField("field8"),
|
||||
},
|
||||
[]Query{
|
||||
NewMatchQuery("test4").SetField("field7"),
|
||||
}),
|
||||
},
|
||||
{
|
||||
input: "test^3",
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetBoost(3.0),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetBoost(3.0),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
{
|
||||
@ -142,11 +130,10 @@ func TestQuerySyntaxParserValid(t *testing.T) {
|
||||
mapping: NewIndexMapping(),
|
||||
result: NewBooleanQuery(
|
||||
nil,
|
||||
NewDisjunctionQuery(
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetBoost(3.0),
|
||||
NewMatchQuery("other").SetBoost(6.0),
|
||||
}),
|
||||
[]Query{
|
||||
NewMatchQuery("test").SetBoost(3.0),
|
||||
NewMatchQuery("other").SetBoost(6.0),
|
||||
},
|
||||
nil),
|
||||
},
|
||||
}
|
||||
|
@ -38,11 +38,11 @@ func TestParseQuery(t *testing.T) {
|
||||
output: NewMatchPhraseQuery("light beer").SetField("desc"),
|
||||
},
|
||||
{
|
||||
input: []byte(`{"must":{"terms": [{"match":"beer","field":"desc"}]},"should":{"terms": [{"match":"water","field":"desc"}]},"must_not":{"terms": [{"match":"devon","field":"desc"}]}}`),
|
||||
input: []byte(`{"must":{"terms": [{"match":"beer","field":"desc"}]},"should":{"terms": [{"match":"water","field":"desc"}],"min":1.0},"must_not":{"terms": [{"match":"devon","field":"desc"}]}}`),
|
||||
output: NewBooleanQuery(
|
||||
NewConjunctionQuery([]Query{NewMatchQuery("beer").SetField("desc")}),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("water").SetField("desc")}).SetMin(0),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("devon").SetField("desc")}).SetMin(0)),
|
||||
[]Query{NewMatchQuery("beer").SetField("desc")},
|
||||
[]Query{NewMatchQuery("water").SetField("desc")},
|
||||
[]Query{NewMatchQuery("devon").SetField("desc")}),
|
||||
},
|
||||
{
|
||||
input: []byte(`{"terms":[{"term":"watered","field":"desc"},{"term":"down","field":"desc"}]}`),
|
||||
@ -208,30 +208,31 @@ func TestQueryValidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
query: NewBooleanQuery(
|
||||
NewConjunctionQuery([]Query{NewMatchQuery("beer").SetField("desc")}),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("water").SetField("desc")}).SetMin(0),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("devon").SetField("desc")}).SetMin(0)),
|
||||
[]Query{NewMatchQuery("beer").SetField("desc")},
|
||||
[]Query{NewMatchQuery("water").SetField("desc")},
|
||||
[]Query{NewMatchQuery("devon").SetField("desc")}),
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
query: NewBooleanQuery(
|
||||
nil,
|
||||
nil,
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("devon").SetField("desc")}).SetMin(0)),
|
||||
[]Query{NewMatchQuery("devon").SetField("desc")}),
|
||||
err: ERROR_BOOLEAN_QUERY_NEEDS_MUST_OR_SHOULD,
|
||||
},
|
||||
{
|
||||
query: NewBooleanQuery(
|
||||
NewConjunctionQuery([]Query{}),
|
||||
NewDisjunctionQuery([]Query{}).SetMin(0),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("devon").SetField("desc")}).SetMin(0)),
|
||||
[]Query{},
|
||||
[]Query{},
|
||||
[]Query{NewMatchQuery("devon").SetField("desc")}),
|
||||
err: ERROR_BOOLEAN_QUERY_NEEDS_MUST_OR_SHOULD,
|
||||
},
|
||||
{
|
||||
query: NewBooleanQuery(
|
||||
NewConjunctionQuery([]Query{NewMatchQuery("beer").SetField("desc")}),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("water").SetField("desc")}).SetMin(2),
|
||||
NewDisjunctionQuery([]Query{NewMatchQuery("devon").SetField("desc")}).SetMin(0)),
|
||||
query: NewBooleanQueryMinShould(
|
||||
[]Query{NewMatchQuery("beer").SetField("desc")},
|
||||
[]Query{NewMatchQuery("water").SetField("desc")},
|
||||
[]Query{NewMatchQuery("devon").SetField("desc")},
|
||||
2.0),
|
||||
err: ERROR_DISJUNCTION_FEWER_THAN_MIN_CLAUSES,
|
||||
},
|
||||
}
|
||||
|
108
y.go
108
y.go
@ -393,148 +393,76 @@ yydefault:
|
||||
str := yyS[yypt-0].s
|
||||
logDebugGrammar("STRING - %s", str)
|
||||
q := NewMatchQuery(str)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 10:
|
||||
//line query_string.y:78
|
||||
//line query_string.y:69
|
||||
{
|
||||
phrase := yyS[yypt-0].s
|
||||
logDebugGrammar("PHRASE - %s", phrase)
|
||||
q := NewMatchPhraseQuery(phrase)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 11:
|
||||
//line query_string.y:94
|
||||
//line query_string.y:76
|
||||
{
|
||||
field := yyS[yypt-2].s
|
||||
str := yyS[yypt-0].s
|
||||
logDebugGrammar("FIELD - %s STRING - %s", field, str)
|
||||
q := NewMatchQuery(str).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 12:
|
||||
//line query_string.y:111
|
||||
//line query_string.y:84
|
||||
{
|
||||
field := yyS[yypt-2].s
|
||||
phrase := yyS[yypt-0].s
|
||||
logDebugGrammar("FIELD - %s PHRASE - %s", field, phrase)
|
||||
q := NewMatchPhraseQuery(phrase).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 13:
|
||||
//line query_string.y:128
|
||||
//line query_string.y:92
|
||||
{
|
||||
field := yyS[yypt-3].s
|
||||
min := yyS[yypt-0].f
|
||||
minInclusive := false
|
||||
logDebugGrammar("FIELD - GREATER THAN %f", min)
|
||||
q := NewNumericRangeInclusiveQuery(&min, nil, &minInclusive, nil).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 14:
|
||||
//line query_string.y:146
|
||||
//line query_string.y:101
|
||||
{
|
||||
field := yyS[yypt-4].s
|
||||
min := yyS[yypt-0].f
|
||||
minInclusive := true
|
||||
logDebugGrammar("FIELD - GREATER THAN OR EQUAL %f", min)
|
||||
q := NewNumericRangeInclusiveQuery(&min, nil, &minInclusive, nil).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 15:
|
||||
//line query_string.y:164
|
||||
//line query_string.y:110
|
||||
{
|
||||
field := yyS[yypt-3].s
|
||||
max := yyS[yypt-0].f
|
||||
maxInclusive := false
|
||||
logDebugGrammar("FIELD - LESS THAN %f", max)
|
||||
q := NewNumericRangeInclusiveQuery(nil, &max, nil, &maxInclusive).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 16:
|
||||
//line query_string.y:182
|
||||
//line query_string.y:119
|
||||
{
|
||||
field := yyS[yypt-4].s
|
||||
max := yyS[yypt-0].f
|
||||
maxInclusive := true
|
||||
logDebugGrammar("FIELD - LESS THAN OR EQUAL %f", max)
|
||||
q := NewNumericRangeInclusiveQuery(nil, &max, nil, &maxInclusive).SetField(field)
|
||||
if parsingMust {
|
||||
parsingMustList.AddQuery(q)
|
||||
parsingMust = false
|
||||
} else if parsingMustNot {
|
||||
parsingMustNotList.AddQuery(q)
|
||||
parsingMustNot = false
|
||||
} else {
|
||||
parsingShouldList.AddQuery(q)
|
||||
}
|
||||
parsingLastQuery = q
|
||||
addQueryToList(q)
|
||||
}
|
||||
case 17:
|
||||
//line query_string.y:202
|
||||
//line query_string.y:130
|
||||
{
|
||||
boost := yyS[yypt-0].f
|
||||
if parsingLastQuery != nil {
|
||||
@ -548,12 +476,12 @@ yydefault:
|
||||
logDebugGrammar("BOOST %f", boost)
|
||||
}
|
||||
case 18:
|
||||
//line query_string.y:216
|
||||
//line query_string.y:144
|
||||
{
|
||||
|
||||
}
|
||||
case 19:
|
||||
//line query_string.y:220
|
||||
//line query_string.y:148
|
||||
{
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user