|
- // Copyright (c) 2014 Couchbase, Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package bleve
-
- import (
- "time"
-
- "github.com/blevesearch/bleve/search/query"
- )
-
- // NewBoolFieldQuery creates a new Query for boolean fields
- func NewBoolFieldQuery(val bool) *query.BoolFieldQuery {
- return query.NewBoolFieldQuery(val)
- }
-
- // NewBooleanQuery creates a compound Query composed
- // of several other Query objects.
- // These other query objects are added using the
- // AddMust() AddShould() and AddMustNot() methods.
- // Result documents must satisfy ALL of the
- // must Queries.
- // Result documents must satisfy NONE of the must not
- // Queries.
- // Result documents that ALSO satisfy any of the should
- // Queries will score higher.
- func NewBooleanQuery() *query.BooleanQuery {
- return query.NewBooleanQuery(nil, nil, nil)
- }
-
- // NewConjunctionQuery creates a new compound Query.
- // Result documents must satisfy all of the queries.
- func NewConjunctionQuery(conjuncts ...query.Query) *query.ConjunctionQuery {
- return query.NewConjunctionQuery(conjuncts)
- }
-
- // NewDateRangeQuery creates a new Query for ranges
- // of date values.
- // Date strings are parsed using the DateTimeParser configured in the
- // top-level config.QueryDateTimeParser
- // Either, but not both endpoints can be nil.
- func NewDateRangeQuery(start, end time.Time) *query.DateRangeQuery {
- return query.NewDateRangeQuery(start, end)
- }
-
- // NewDateRangeInclusiveQuery creates a new Query for ranges
- // of date values.
- // Date strings are parsed using the DateTimeParser configured in the
- // top-level config.QueryDateTimeParser
- // Either, but not both endpoints can be nil.
- // startInclusive and endInclusive control inclusion of the endpoints.
- func NewDateRangeInclusiveQuery(start, end time.Time, startInclusive, endInclusive *bool) *query.DateRangeQuery {
- return query.NewDateRangeInclusiveQuery(start, end, startInclusive, endInclusive)
- }
-
- // NewDisjunctionQuery creates a new compound Query.
- // Result documents satisfy at least one Query.
- func NewDisjunctionQuery(disjuncts ...query.Query) *query.DisjunctionQuery {
- return query.NewDisjunctionQuery(disjuncts)
- }
-
- // NewDocIDQuery creates a new Query object returning indexed documents among
- // the specified set. Combine it with ConjunctionQuery to restrict the scope of
- // other queries output.
- func NewDocIDQuery(ids []string) *query.DocIDQuery {
- return query.NewDocIDQuery(ids)
- }
-
- // NewFuzzyQuery creates a new Query which finds
- // documents containing terms within a specific
- // fuzziness of the specified term.
- // The default fuzziness is 1.
- //
- // The current implementation uses Levenshtein edit
- // distance as the fuzziness metric.
- func NewFuzzyQuery(term string) *query.FuzzyQuery {
- return query.NewFuzzyQuery(term)
- }
-
- // NewMatchAllQuery creates a Query which will
- // match all documents in the index.
- func NewMatchAllQuery() *query.MatchAllQuery {
- return query.NewMatchAllQuery()
- }
-
- // NewMatchNoneQuery creates a Query which will not
- // match any documents in the index.
- func NewMatchNoneQuery() *query.MatchNoneQuery {
- return query.NewMatchNoneQuery()
- }
-
- // NewMatchPhraseQuery creates a new Query object
- // for matching phrases in the index.
- // An Analyzer is chosen based on the field.
- // Input text is analyzed using this analyzer.
- // Token terms resulting from this analysis are
- // used to build a search phrase. Result documents
- // must match this phrase. Queried field must have been indexed with
- // IncludeTermVectors set to true.
- func NewMatchPhraseQuery(matchPhrase string) *query.MatchPhraseQuery {
- return query.NewMatchPhraseQuery(matchPhrase)
- }
-
- // NewMatchQuery creates a Query for matching text.
- // An Analyzer is chosen based on the field.
- // Input text is analyzed using this analyzer.
- // Token terms resulting from this analysis are
- // used to perform term searches. Result documents
- // must satisfy at least one of these term searches.
- func NewMatchQuery(match string) *query.MatchQuery {
- return query.NewMatchQuery(match)
- }
-
- // NewNumericRangeQuery creates a new Query for ranges
- // of numeric values.
- // Either, but not both endpoints can be nil.
- // The minimum value is inclusive.
- // The maximum value is exclusive.
- func NewNumericRangeQuery(min, max *float64) *query.NumericRangeQuery {
- return query.NewNumericRangeQuery(min, max)
- }
-
- // NewNumericRangeInclusiveQuery creates a new Query for ranges
- // of numeric values.
- // Either, but not both endpoints can be nil.
- // Control endpoint inclusion with inclusiveMin, inclusiveMax.
- func NewNumericRangeInclusiveQuery(min, max *float64, minInclusive, maxInclusive *bool) *query.NumericRangeQuery {
- return query.NewNumericRangeInclusiveQuery(min, max, minInclusive, maxInclusive)
- }
-
- // NewTermRangeQuery creates a new Query for ranges
- // of text terms.
- // Either, but not both endpoints can be "".
- // The minimum value is inclusive.
- // The maximum value is exclusive.
- func NewTermRangeQuery(min, max string) *query.TermRangeQuery {
- return query.NewTermRangeQuery(min, max)
- }
-
- // NewTermRangeInclusiveQuery creates a new Query for ranges
- // of text terms.
- // Either, but not both endpoints can be "".
- // Control endpoint inclusion with inclusiveMin, inclusiveMax.
- func NewTermRangeInclusiveQuery(min, max string, minInclusive, maxInclusive *bool) *query.TermRangeQuery {
- return query.NewTermRangeInclusiveQuery(min, max, minInclusive, maxInclusive)
- }
-
- // NewPhraseQuery creates a new Query for finding
- // exact term phrases in the index.
- // The provided terms must exist in the correct
- // order, at the correct index offsets, in the
- // specified field. Queried field must have been indexed with
- // IncludeTermVectors set to true.
- func NewPhraseQuery(terms []string, field string) *query.PhraseQuery {
- return query.NewPhraseQuery(terms, field)
- }
-
- // NewPrefixQuery creates a new Query which finds
- // documents containing terms that start with the
- // specified prefix.
- func NewPrefixQuery(prefix string) *query.PrefixQuery {
- return query.NewPrefixQuery(prefix)
- }
-
- // NewRegexpQuery creates a new Query which finds
- // documents containing terms that match the
- // specified regular expression.
- func NewRegexpQuery(regexp string) *query.RegexpQuery {
- return query.NewRegexpQuery(regexp)
- }
-
- // NewQueryStringQuery creates a new Query used for
- // finding documents that satisfy a query string. The
- // query string is a small query language for humans.
- func NewQueryStringQuery(q string) *query.QueryStringQuery {
- return query.NewQueryStringQuery(q)
- }
-
- // NewTermQuery creates a new Query for finding an
- // exact term match in the index.
- func NewTermQuery(term string) *query.TermQuery {
- return query.NewTermQuery(term)
- }
-
- // NewWildcardQuery creates a new Query which finds
- // documents containing terms that match the
- // specified wildcard. In the wildcard pattern '*'
- // will match any sequence of 0 or more characters,
- // and '?' will match any single character.
- func NewWildcardQuery(wildcard string) *query.WildcardQuery {
- return query.NewWildcardQuery(wildcard)
- }
-
- // NewGeoBoundingBoxQuery creates a new Query for performing geo bounding
- // box searches. The arguments describe the position of the box and documents
- // which have an indexed geo point inside the box will be returned.
- func NewGeoBoundingBoxQuery(topLeftLon, topLeftLat, bottomRightLon, bottomRightLat float64) *query.GeoBoundingBoxQuery {
- return query.NewGeoBoundingBoxQuery(topLeftLon, topLeftLat, bottomRightLon, bottomRightLat)
- }
-
- // NewGeoDistanceQuery creates a new Query for performing geo distance
- // searches. The arguments describe a position and a distance. Documents
- // which have an indexed geo point which is less than or equal to the provided
- // distance from the given position will be returned.
- func NewGeoDistanceQuery(lon, lat float64, distance string) *query.GeoDistanceQuery {
- return query.NewGeoDistanceQuery(lon, lat, distance)
- }
|