Drop indexes + view
This commit is contained in:
parent
315a01ea18
commit
68109f8666
@ -54,6 +54,7 @@ fun main() {
|
||||
migrations.migrate()
|
||||
|
||||
val noteService = koin.get<NoteService>()
|
||||
noteService.dropAllIndexes()
|
||||
noteService.indexAll()
|
||||
|
||||
koin.get<Server>().start()
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package be.simplenotes.app.views.components
|
||||
|
||||
import kotlinx.html.*
|
||||
import kotlinx.html.ButtonType.submit
|
||||
import kotlinx.html.FormMethod.post
|
||||
|
||||
fun DIV.noteListHeader(numberOfDeletedNotes: Int) {
|
||||
div("flex justify-between mb-4") {
|
||||
@ -16,4 +18,14 @@ fun DIV.noteListHeader(numberOfDeletedNotes: Int) {
|
||||
) { +"New" }
|
||||
}
|
||||
}
|
||||
form(method = post, classes = "mb-4") {
|
||||
val colors = "bg-gray-800 border-gray-700 focus:border-teal-500 text-white"
|
||||
input(
|
||||
name = "search",
|
||||
classes = "$colors rounded w-3/4 border appearance-none focus:outline-none text-base p-2"
|
||||
)
|
||||
button(type = submit, classes = "btn btn-green w-1/4") {
|
||||
+"search"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,6 +86,8 @@ class NoteService(
|
||||
}
|
||||
|
||||
fun search(userId: Int, searchTerms: SearchTerms) = searcher.search(userId, searchTerms)
|
||||
|
||||
fun dropAllIndexes() = searcher.dropAll()
|
||||
}
|
||||
|
||||
data class PaginatedNotes(val pages: Int, val notes: List<PersistedNoteMetadata>)
|
||||
|
||||
@ -6,11 +6,11 @@
|
||||
</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<root level="INFO">
|
||||
<root level="DEBUG">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
<logger name="org.eclipse.jetty" level="INFO"/>
|
||||
<logger name="me.liuwj.ktorm.database" level="DEBUG"/>
|
||||
<logger name="me.liuwj.ktorm.database" level="INFO"/>
|
||||
<logger name="com.zaxxer.hikari" level="INFO"/>
|
||||
<logger name="org.flywaydb.core" level="INFO"/>
|
||||
</configuration>
|
||||
|
||||
@ -2,6 +2,7 @@ package be.simplenotes.search
|
||||
|
||||
import be.simplenotes.domain.model.PersistedNote
|
||||
import be.simplenotes.domain.model.PersistedNoteMetadata
|
||||
import be.simplenotes.search.utils.rmdir
|
||||
import org.apache.lucene.analysis.standard.StandardAnalyzer
|
||||
import org.apache.lucene.index.*
|
||||
import org.apache.lucene.search.*
|
||||
@ -68,7 +69,7 @@ class NoteSearcher(basePath: Path = Path.of("/tmp", "lucene")) {
|
||||
}
|
||||
|
||||
fun deleteIndex(userId: Int, uuid: UUID) {
|
||||
logger.debug("Deleting indexing $uuid for user $userId")
|
||||
logger.debug("Deleting index $uuid for user $userId")
|
||||
|
||||
val dir = getDirectory(userId)
|
||||
val config = IndexWriterConfig(StandardAnalyzer())
|
||||
@ -108,31 +109,14 @@ class NoteSearcher(basePath: Path = Path.of("/tmp", "lucene")) {
|
||||
}
|
||||
|
||||
val query = builder.build()
|
||||
logger.debug("Searching: $query")
|
||||
|
||||
val topDocs = searcher.search(query, 10)
|
||||
logger.debug("Searching: `$query` results: ${topDocs.totalHits.value}")
|
||||
return topDocs.toResults(searcher)
|
||||
}
|
||||
|
||||
fun dropIndex(userId: Int) {
|
||||
val index = File(baseFile, userId.toString()).toPath()
|
||||
try {
|
||||
Files.walkFileTree(
|
||||
index,
|
||||
object : SimpleFileVisitor<Path>() {
|
||||
override fun visitFile(file: Path, attrs: BasicFileAttributes?): FileVisitResult {
|
||||
Files.delete(file)
|
||||
return FileVisitResult.CONTINUE
|
||||
}
|
||||
fun dropIndex(userId: Int) = rmdir(File(baseFile, userId.toString()).toPath())
|
||||
|
||||
fun dropAll() = rmdir(baseFile.toPath())
|
||||
|
||||
override fun postVisitDirectory(dir: Path, exc: IOException?): FileVisitResult {
|
||||
Files.delete(dir)
|
||||
return FileVisitResult.CONTINUE
|
||||
}
|
||||
}
|
||||
)
|
||||
} catch (e: IOException) {
|
||||
// This is fine
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
29
search/src/main/kotlin/utils/PathUtils.kt
Normal file
29
search/src/main/kotlin/utils/PathUtils.kt
Normal file
@ -0,0 +1,29 @@
|
||||
package be.simplenotes.search.utils
|
||||
|
||||
import java.io.IOException
|
||||
import java.nio.file.FileVisitResult
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.SimpleFileVisitor
|
||||
import java.nio.file.attribute.BasicFileAttributes
|
||||
|
||||
internal fun rmdir(path: Path) {
|
||||
try {
|
||||
Files.walkFileTree(
|
||||
path,
|
||||
object : SimpleFileVisitor<Path>() {
|
||||
override fun visitFile(file: Path, attrs: BasicFileAttributes?): FileVisitResult {
|
||||
Files.delete(file)
|
||||
return FileVisitResult.CONTINUE
|
||||
}
|
||||
|
||||
override fun postVisitDirectory(dir: Path, exc: IOException?): FileVisitResult {
|
||||
Files.delete(dir)
|
||||
return FileVisitResult.CONTINUE
|
||||
}
|
||||
}
|
||||
)
|
||||
} catch (e: IOException) {
|
||||
// This is fine
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user