First basic working solr search

This commit is contained in:
Eike Kettner
2020-06-20 01:57:24 +02:00
parent 2a0bf24088
commit 3576c45d1a
14 changed files with 277 additions and 107 deletions

View File

@ -1,19 +0,0 @@
package docspell.ftsclient
import cats.data.NonEmptyList
import cats.implicits._
import docspell.common._
import FtsBasicResult.AttachmentMatch
final case class FtsBasicResult(item: Ident, attachments: NonEmptyList[AttachmentMatch]) {
def score: Double =
attachments.map(_.score).toList.max
}
object FtsBasicResult {
case class AttachmentMatch(id: Ident, score: Double)
}

View File

@ -19,7 +19,7 @@ trait FtsClient[F[_]] {
*/
def initialize: F[Unit]
def searchBasic(q: FtsQuery): Stream[F, FtsBasicResult]
def searchBasic(q: FtsQuery): Stream[F, FtsResult]
def indexData(logger: Logger[F], data: Stream[F, TextData]): F[Unit]
}

View File

@ -7,4 +7,4 @@ import docspell.common._
* The query itself is a raw string. Each implementation may
* interpret it according to the system in use.
*/
final case class FtsQuery(q: String, collective: Ident, limit: Int, offset: Int)
final case class FtsQuery(q: String, collective: Ident, limit: Int, offset: Int, items: List[Ident])

View File

@ -0,0 +1,28 @@
package docspell.ftsclient
import docspell.common._
import FtsResult.ItemMatch
final case class FtsResult(
qtime: Duration,
count: Int,
maxScore: Double,
highlight: Map[Ident, List[String]],
results: List[ItemMatch]
) {}
object FtsResult {
sealed trait MatchData
case class AttachmentData(attachId: Ident) extends MatchData
case object ItemData extends MatchData
case class ItemMatch(
id: Ident,
itemId: Ident,
collectiveId: Ident,
score: Double,
data: MatchData
)
}