code: func (q *Query) andTrigrams(t stringSet) *Query {
  	if t.minLen() < 3 {
  		// If there is a short string, we can't guarantee
  		// that any trigrams must be present, so use ALL.
  		// q AND ALL = q.
  		return q
  	}
  
  	//println("andtrigrams", strings.Join(t, ","))
  	or := noneQuery
  	for _, tt := range t {
  		var trig stringSet
  		for i := 0; i+3 <= len(tt); i++ {
  			trig.add(tt[i : i+3])
  		}
  		trig.clean(false)
  		//println(tt, "trig", strings.Join(trig, ","))
  		or = or.or(&Query{Op: QAnd, Trigram: trig})
  	}
  	q = q.and(or)
  	return q
  }
docs: // andTrigrams returns q AND the OR of the AND of the trigrams present in each string.