コード例 #1
0
ファイル: search_term_prefix.go プロジェクト: bozzcq/bleve
func NewTermPrefixSearcher(index index.Index, prefix string, field string, boost float64, explain bool) (*TermPrefixSearcher, error) {
	// find the terms with this prefix
	fieldReader, err := index.FieldReader(field, []byte(prefix), []byte(prefix))

	// enumerate all the terms in the range
	qsearchers := make([]search.Searcher, 0, 25)
	tfd, err := fieldReader.Next()
	for err == nil && tfd != nil {
		qsearcher, err := NewTermSearcher(index, string(tfd.Term), field, 1.0, explain)
		if err != nil {
			return nil, err
		}
		qsearchers = append(qsearchers, qsearcher)
		tfd, err = fieldReader.Next()
	}
	// build disjunction searcher of these ranges
	searcher, err := NewDisjunctionSearcher(index, qsearchers, 0, explain)
	if err != nil {
		return nil, err
	}

	return &TermPrefixSearcher{
		index:    index,
		prefix:   prefix,
		field:    field,
		explain:  explain,
		searcher: searcher,
	}, nil
}