Scaps: Scala API Search
Scaps is a search engine for discovering functionality in Scala libraries. You can use both type signatures and keywords to search for definitions.
Scaps is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with Scaps, You can obtain one at http://mozilla.org/MPL/2.0/.
Changes to the search algorithm can be evaluated with the test collections defined in
evaluation/src/main/resources/. To benchmark the core library with the standard parametrization, run
sbt ’evaluation/run-main scaps.evaluation.Benchmark’
Publish and Install the SBT Plug-in
The SBT plug-in has to be published to a maven repository before it can be used in an SBT project. To publish all artifacts including the plug-in to the local Ivy repository, run:
The plug-in can now be used by creating a new SBT project on the same machine that also hosts the web service and including the following line in the
addSbtPlugin("org.scala-search" % "scaps-sbt" % <scapsVersion>)
Additionally, the libraries to index have to be included in the project's
build.sbt file as a library dependency. For example, to index scalaz, add
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.1"
The Scala Standard Library is a library dependency per default and does not need to be added in order to be indexed.
If the Scaps control API is not exposed at the default ports, the correct hostname can bet set by using
scapsControlHost in Scaps := "localhost:9000"
to set the location of the Control API.
Finally, an index job can be started by running
An example project, that demonstrates the required project structure is also given in the
Run the Web Service
The simplest way to start an instance of the Scaps web service is by using SBT:
This will bind the User API and the Control API to the interfaces and ports as configured in
webservice/src/main/resources/application.conf. By default, the User API (including the Web UI) is bound to all interfaces on the port
8080 and the Control API is bound to the
localhost interface on the port
For executing the Service in a productive deployment, using SBT is not advised. Instead, the service should be packaged in a standalone, executable jar (see http://www.scala-sbt.org/sbt-native-packager/):
An example configuration for a productive deployment is given in