Skip to content

Commit 80609fb

Browse files
Merge pull request #13 from clj-codes/feat/new-fulltext-index-n-extra-fields
feat: new fulltext index and extra fields
2 parents 353d8db + e5ff5a8 commit 80609fb

File tree

4 files changed

+49
-14
lines changed

4 files changed

+49
-14
lines changed

deps.edn

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{:paths ["src" "resources"]
22
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
33
org.clojure/tools.deps {:mvn/version "0.18.1398"}
4-
clj-kondo/clj-kondo {:mvn/version "2023.12.15"}
5-
datalevin/datalevin {:mvn/version "0.8.25"}
4+
clj-kondo/clj-kondo {:mvn/version "2024.02.12"}
5+
datalevin/datalevin {:mvn/version "0.8.26"}
66
com.cognitect/transit-clj {:mvn/version "1.0.333"}
7-
org.slf4j/slf4j-nop {:mvn/version "2.0.11"}}
7+
org.slf4j/slf4j-nop {:mvn/version "2.0.12"}}
88

99
:aliases
1010
{:extract {:ns-default codes.clj.docs.extractor.core
@@ -22,7 +22,7 @@
2222
lambdaisland/kaocha {:mvn/version "1.87.1366"}
2323
lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"}
2424
nubank/mockfn {:mvn/version "0.7.0"}
25-
nubank/matcher-combinators {:mvn/version "3.8.8"}}
25+
nubank/matcher-combinators {:mvn/version "3.9.1"}}
2626
; needed for datalevin on jvm > 11
2727
:jvm-opts ["--add-opens=java.base/java.nio=ALL-UNNAMED"
2828
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]}

dev/playground.clj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,24 @@
5454
result (doall (d/q '[:find (pull ?e [* {:namespace/project [*]}]) ?a ?v
5555
:in $ ?q
5656
:where
57-
[(fulltext $ ?q) [[?e ?a ?v]]]]
57+
[(fulltext $ ?q {:domains ["definition"]}) [[?e ?a ?v]]]]
5858
db
5959
"assoc"))]
6060
(d/close conn)
6161
result)
6262

63+
; simple query definition by name
64+
(let [conn (d/get-conn "target/docs-db" datalevin/db-schemas)
65+
db (d/db conn)
66+
result (doall (d/q '[:find (pull ?e [* {:definition/namespace [* {:namespace/project [*]}]}])
67+
:in $ ?q
68+
:where
69+
[?e :definition/name ?q]]
70+
db
71+
"file-position"))]
72+
(d/close conn)
73+
result)
74+
6375
; regex searching
6476
(let [conn (d/get-conn "target/docs-db" datalevin/db-schemas)
6577
db (d/db conn)

src/codes/clj/docs/extractor/adapters.clj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@
7777
[group artifact] (-> project :project-name (str/split #"/"))]
7878
(->> namespaces
7979
group-multi-langs
80-
(mapv (fn [{:keys [end-row meta name-end-col name-end-row name-row added
81-
name author filename col name-col end-col doc row]}]
80+
(mapv (fn [{:keys [end-row meta name-end-col name-end-row name-row deprecated added
81+
name author filename col name-col end-col doc no-doc row]}]
8282
(let [trim-filename (str/replace filename root "")]
8383
(assoc-some
8484
{:namespace/id (str/join "/" [group artifact name])
@@ -91,6 +91,7 @@
9191
:namespace/name-end-col name-end-col
9292
:namespace/name-end-row name-end-row
9393
:namespace/name-row name-row
94+
:namespace/deprecated deprecated
9495
:namespace/added added
9596
:namespace/author author
9697
:namespace/filename trim-filename
@@ -99,6 +100,7 @@
99100
:namespace/name-col name-col
100101
:namespace/end-col end-col
101102
:namespace/doc doc
103+
:namespace/no-doc (some-> no-doc boolean)
102104
:namespace/row row))))))))
103105
[]
104106
analysis))
@@ -117,7 +119,7 @@
117119
(->> definitions
118120
group-multi-langs
119121
(mapv (fn [{:keys [fixed-arities end-row meta name-end-col
120-
name-end-row name-row added ns name author
122+
name-end-row name-row added deprecated ns name author
121123
defined-by filename macro col name-col end-col
122124
arglist-strs varargs-min-arity doc row
123125
private protocol-ns protocol-name]}]
@@ -138,6 +140,7 @@
138140
:definition/name-end-row name-end-row
139141
:definition/name-row name-row
140142
:definition/added added
143+
:definition/deprecated deprecated
141144
:definition/author author
142145
:definition/filename trim-filename
143146
:definition/git-source (when trim-filename

src/codes/clj/docs/extractor/datalevin.clj

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77
{:project/id {:db/valueType :db.type/string
88
:unique :db.unique/identity}
99
:project/name {:db/valueType :db.type/string}
10-
:project/group {:db/valueType :db.type/string}
11-
:project/artifact {:db/valueType :db.type/string}
10+
:project/group {:db/valueType :db.type/string
11+
:db/fulltext true
12+
:db.fulltext/domains ["project"
13+
"project-group"]}
14+
:project/artifact {:db/valueType :db.type/string
15+
:db/fulltext true
16+
:db.fulltext/domains ["project"
17+
"project-name"]}
1218
:project/paths {:db/valueType :db.type/string
1319
:db/cardinality :db.cardinality/many}
1420
:project/url {:db/valueType :db.type/string}
@@ -19,33 +25,47 @@
1925
(def namespace-schema
2026
{:namespace/id {:db/valueType :db.type/string
2127
:unique :db.unique/identity}
22-
:namespace/name {:db/valueType :db.type/string}
28+
:namespace/name {:db/valueType :db.type/string
29+
:db/fulltext true
30+
:db.fulltext/domains ["namespace"
31+
"namespace-name"]}
2332
:namespace/project {:db/valueType :db.type/ref}
2433
:namespace/group {:db/valueType :db.type/string}
2534
:namespace/artifact {:db/valueType :db.type/string}
35+
:namespace/no-doc {:db/valueType :db.type/boolean}
2636
:namespace/doc {:db/valueType :db.type/string
27-
:db/fulltext true}
37+
:db/fulltext true
38+
:db.fulltext/autoDomain true
39+
:db.fulltext/domains ["namespace"
40+
"namespace-doc"]}
2841
:namespace/author {:db/valueType :db.type/string}
2942
:namespace/filename {:db/valueType :db.type/string}
3043
:namespace/git-source {:db/valueType :db.type/string}
44+
:namespace/deprecated {:db/valueType :db.type/string}
3145
:namespace/added {:db/valueType :db.type/string}
3246
:namespace/row {:db/valueType :db.type/long}
3347
:namespace/col {:db/valueType :db.type/long}})
3448

3549
(def definition-schema
3650
{:definition/id {:db/valueType :db.type/string
3751
:unique :db.unique/identity}
38-
:definition/name {:db/valueType :db.type/string}
52+
:definition/name {:db/valueType :db.type/string
53+
:db/fulltext true
54+
:db.fulltext/domains ["definition"
55+
"definition-name"]}
3956
:definition/namespace {:db/valueType :db.type/ref}
4057
:definition/group {:db/valueType :db.type/string}
4158
:definition/artifact {:db/valueType :db.type/string}
4259
:definition/doc {:db/valueType :db.type/string
43-
:db/fulltext true}
60+
:db/fulltext true
61+
:db.fulltext/domains ["definition"
62+
"definition-doc"]}
4463
:definition/filename {:db/valueType :db.type/string}
4564
:definition/git-source {:db/valueType :db.type/string}
4665
:definition/arglist-strs {:db/valueType :db.type/string
4766
:db/cardinality :db.cardinality/many}
4867
:definition/varargs-min-arity {:db/valueType :db.type/long}
68+
:definition/deprecated {:db/valueType :db.type/string}
4969
:definition/added {:db/valueType :db.type/string}
5070
:definition/macro {:db/valueType :db.type/boolean}
5171
:definition/private {:db/valueType :db.type/boolean}

0 commit comments

Comments
 (0)