|
58 | 58 | db (d/db conn) |
59 | 59 |
|
60 | 60 | datoms (->> (d/fulltext-datoms db |
61 | | - "ass" |
| 61 | + "->" |
62 | 62 | {:top 30 |
63 | 63 | :domains ["definition-name" |
64 | 64 | "namespace-name" |
|
143 | 143 |
|
144 | 144 | ; tests with fulltext and analyzer |
145 | 145 | (let [query-analyzer (su/create-analyzer |
146 | | - {:tokenizer (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+") |
| 146 | + {:tokenizer (datalevin/merge-tokenizers |
| 147 | + (su/create-regexp-tokenizer #"[.]+") |
| 148 | + (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+")) |
147 | 149 | :token-filters [su/lower-case-token-filter]}) |
148 | 150 |
|
149 | 151 | analyzer (su/create-analyzer |
150 | | - {:tokenizer (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+") |
| 152 | + {:tokenizer (datalevin/merge-tokenizers |
| 153 | + (su/create-regexp-tokenizer #"[.]+") |
| 154 | + (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+")) |
151 | 155 | :token-filters [su/lower-case-token-filter |
152 | 156 | su/prefix-token-filter]}) |
153 | 157 |
|
154 | | - dir "/tmp/mydb" |
| 158 | + dir (str "/tmp/mydb-" (random-uuid)) |
155 | 159 | conn (d/create-conn dir |
156 | 160 | {:text {:db/valueType :db.type/string |
157 | 161 | :db/fulltext true |
|
169 | 173 | {:text "associative?"} |
170 | 174 | {:text "b"} |
171 | 175 | {:text "ba"} |
172 | | - {:text "bas"}] |
| 176 | + {:text "bas"} |
| 177 | + {:text "*"} |
| 178 | + {:text "/"} |
| 179 | + {:text "->"} |
| 180 | + {:text "->>"} |
| 181 | + {:text "as->"} |
| 182 | + {:text "as->banana"}] |
173 | 183 |
|
174 | 184 | _transact (d/transact! conn data) |
175 | 185 |
|
176 | | - result (->> (d/q '[:find ?i |
| 186 | + result (->> (d/q '[:find ?e ?v |
177 | 187 | :in $ ?q |
178 | 188 | :where |
179 | | - [(fulltext $ ?q {:top 20}) [[?e]]] |
180 | | - [?e :text ?i]] |
| 189 | + [(fulltext $ ?q {:top 20}) [[?e ?a ?v]]]] |
181 | 190 | (d/db conn) |
182 | | - "assoc-me") |
| 191 | + "as->") |
183 | 192 | doall)] |
184 | 193 |
|
185 | 194 | (d/close conn) |
186 | 195 | (util/delete-files dir) |
187 | 196 |
|
188 | 197 | result) |
189 | 198 |
|
190 | | -; tests with fulltext and analyzer on a raw query |
| 199 | + ; tests with fulltext and analyzer on a raw query |
191 | 200 | (let [query-analyzer (su/create-analyzer |
192 | | - {:tokenizer (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+") |
| 201 | + {:tokenizer (datalevin/merge-tokenizers |
| 202 | + (su/create-regexp-tokenizer #"[.*]+") |
| 203 | + (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+")) |
193 | 204 | :token-filters [su/lower-case-token-filter]}) |
194 | 205 |
|
195 | 206 | analyzer (su/create-analyzer |
196 | | - {:tokenizer (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+") |
| 207 | + {:tokenizer (datalevin/merge-tokenizers |
| 208 | + (su/create-regexp-tokenizer #"[.*]+") |
| 209 | + (su/create-regexp-tokenizer #"[\s:/\.;,!=?\"'()\[\]{}|<>&@#^*\\~`\-]+")) |
197 | 210 | :token-filters [su/lower-case-token-filter |
198 | 211 | su/prefix-token-filter]}) |
199 | 212 |
|
200 | | - lmdb (d/open-kv "/tmp/mydb") |
| 213 | + dir (str "/tmp/lmdb-" (random-uuid)) |
| 214 | + lmdb (d/open-kv dir) |
201 | 215 |
|
202 | 216 | engine (d/new-search-engine lmdb {:query-analyzer query-analyzer |
203 | 217 | :analyzer analyzer |
|
213 | 227 | 7 "associative?" |
214 | 228 | 8 "b" |
215 | 229 | 9 "ba" |
216 | | - 10 "bas"} |
| 230 | + 10 "bas" |
| 231 | + 11 "->" |
| 232 | + 12 "->>" |
| 233 | + 13 "as->" |
| 234 | + 14 "as->banana"} |
217 | 235 |
|
218 | 236 | _transact (doseq [[k v] input] |
219 | 237 | (d/add-doc engine k v)) |
220 | 238 |
|
221 | | - result (doall (d/search engine "assoc-m" {:top 20 :display :texts}))] |
| 239 | + result (doall (d/search engine "as->" {:top 20 :display :texts}))] |
222 | 240 |
|
223 | 241 | (d/close-kv lmdb) |
| 242 | + (util/delete-files dir) |
224 | 243 |
|
225 | 244 | result)) |
0 commit comments