es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué falló la búsqueda de texto completo en Datomic?

Probado en datomic-free 0.9.5697, clojure 1.10.3 y openjdk 17.01.

(require '[datomic.api :as d])

(def uri "datomic:mem://test")
(d/create-database uri)
(def conn (d/connect uri))
(def db (-> conn d/db delay))

(def schema [{:db/ident :person/name
              :db/valueType :db.type/string
              :db/cardinality :db.cardinality/one}])
(d/transact conn schema)

(def datoms [{:person/name "Oliver Smith"}])
(d/transact conn datoms)

(def query '[:find ?name
             :where
             [_ :person/name ?name]])
(-> (d/q query @db) println) ; ok => #{[Oliver Smith]}

(def query '[:find ?name
             :where
             [(fulltext $ :person/name "Smith") [[_ ?name]]]])

(-> (d/q query @db) println) ; nok => expected: #{[Oliver Smith]}, actual: #{}

¿Por qué la búsqueda fulltext anterior devolvió vacío?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La búsqueda de texto completo anterior devolvió un resultado vacío porque la función de texto completo solo funciona con atributos que tienen una bandera :db/fulltext true establecida en la definición del esquema. En el código dado, el atributo :person/name no tiene la bandera :db/fulltext true establecida, por lo tanto, la búsqueda no coincidió y devolvió un conjunto de resultados vacío. Para solucionar esto, necesitamos agregar la bandera :db/fulltext true a la definición del esquema del atributo :person/name.

Comments are closed.