/
store.clj
39 lines (33 loc) · 1.04 KB
/
store.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(ns clucie.store
(:require [clojure.java.io :as io])
(:import [java.nio.file Paths]
[org.apache.lucene.analysis Analyzer]
[org.apache.lucene.store NIOFSDirectory RAMDirectory Directory]
[org.apache.lucene.index IndexWriter IndexWriterConfig IndexReader DirectoryReader]))
(defn memory-store
"Create a new index in RAM."
^org.apache.lucene.store.RAMDirectory
[]
(RAMDirectory.))
(defn disk-store
"Create a new index in a directory on disk."
^org.apache.lucene.store.NIOFSDirectory
[dir-path]
(NIOFSDirectory. (Paths/get (.toURI (io/file dir-path)))))
(defn store-writer
"Create an IndexWriter."
^org.apache.lucene.index.IndexWriter
[index ^Analyzer analyzer]
(IndexWriter. index (IndexWriterConfig. analyzer)))
(defn store-reader
"Create an IndexReader."
^org.apache.lucene.index.IndexReader
[^Directory index]
(DirectoryReader/open index))
(defn close!
"Close an index."
[^Directory index]
(.close index))
(defn valid-store?
[^Directory index]
(DirectoryReader/indexExists index))