diff --git a/src/metabase/search/impl.clj b/src/metabase/search/impl.clj index 8d3eee4ba2628840b42fad12342a8db43bf9ceb3..e79dbe252a199af58a4ef8f5fe204b30612cd1b6 100644 --- a/src/metabase/search/impl.clj +++ b/src/metabase/search/impl.clj @@ -11,6 +11,7 @@ [metabase.models.database :as database] [metabase.models.interface :as mi] [metabase.permissions.util :as perms.u] + [metabase.public-settings :as public-settings] [metabase.public-settings.premium-features :as premium-features] [metabase.search.api :as search.api] [metabase.search.config @@ -206,7 +207,10 @@ (defmethod supported-engine? :search.engine/in-place [_] true) (defmethod supported-engine? :search.engine/fulltext [_] (search.fulltext/supported-db? (mdb/db-type))) -(def ^:private default-engine :search.engine/in-place) +(defn- default-engine [] + (if (public-settings/experimental-fulltext-search-enabled) + :search.engine/fulltext + :search.engine/in-place)) (defn- known-engine? [engine] (let [registered? #(contains? (methods supported-engine?) %)] @@ -224,15 +228,16 @@ :else engine))) - default-engine)) + (default-engine))) ;; This forwarding is here for tests, we should clean those up. (defn- apply-default-engine [{:keys [search-engine] :as search-ctx}] - (when (= default-engine search-engine) - (throw (ex-info "Missing implementation for default search-engine" {:search-engine search-engine}))) - (log/debugf "Missing implementation for %s so instead using %s" search-engine default-engine) - (assoc search-ctx :search-engine default-engine)) + (let [default (default-engine)] + (when (= default search-engine) + (throw (ex-info "Missing implementation for default search-engine" {:search-engine search-engine}))) + (log/debugf "Missing implementation for %s so instead using %s" search-engine default) + (assoc search-ctx :search-engine default))) (defmethod search.api/results :default [search-ctx] (search.api/results (apply-default-engine search-ctx)))