diff --git a/docs/rest-api/rest-notebook.md b/docs/rest-api/rest-notebook.md
index 7393c5a2a87..fade802c5b4 100644
--- a/docs/rest-api/rest-notebook.md
+++ b/docs/rest-api/rest-notebook.md
@@ -556,4 +556,33 @@ limitations under the License.
{"status":"OK","body":"* * * * * ?"} |
+
+
+
+
+ | Full-text search through the paragraphs in all notebooks |
+ |
+
+
+ | Description |
+ ```GET``` request will return list of matching paragraphs
+ |
+
+
+ | URL |
+ ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/search?q=[query]``` |
+
+
+ | Success code |
+ 200 |
+
+
+ | Fail code |
+ 500 |
+
+
+ | Sample JSON response |
+ {"status":"OK", body: [{"id":"/paragraph/", "name":"Notebook Name", "snippet":"", "text":""}]} |
+
+
diff --git a/zeppelin-distribution/src/bin_license/LICENSE b/zeppelin-distribution/src/bin_license/LICENSE
index 1cce5dcec9c..52ce3ebc7f2 100644
--- a/zeppelin-distribution/src/bin_license/LICENSE
+++ b/zeppelin-distribution/src/bin_license/LICENSE
@@ -44,6 +44,7 @@ The following components are provided under Apache License.
(Apache 2.0) Apache Tajo (http://tajo.apache.org/)
(Apache 2.0) Apache Flink (http://flink.apache.org/)
(Apache 2.0) Apache Thrift (http://thrift.apache.org/)
+ (Apache 2.0) Apache Lucene (https://lucene.apache.org/)
(Apache 2.0) Apache Zookeeper (org.apache.zookeeper:zookeeper:jar:3.4.5 - http://zookeeper.apache.org/)
(Apache 2.0) Chill (com.twitter:chill-java:jar:0.5.0 - https://github.com/twitter/chill/)
(Apache 2.0) Codehaus Plexus (org.codehaus.plexus:plexus:jar:1.5.6 - https://codehaus-plexus.github.io/)
@@ -129,10 +130,10 @@ The following components are provided under the MIT License.
(The MIT License) Objenesis (org.objenesis:objenesis:2.1 - https://github.com/easymock/objenesis) - Copyright (c) 2006-2015 the original author and authors
(The MIT License) JCL 1.1.1 implemented over SLF4J (org.slf4j:jcl-over-slf4j:1.7.5 - http://www.slf4j.org)
(The MIT License) JUL to SLF4J bridge (org.slf4j:jul-to-slf4j:1.7.5 - http://www.slf4j.org)
+ (The MIT License) angular-resource (angular-resource - https://github.com/angular/angular.js/tree/master/src/ngResource)
(The MIT License) minimal-json (com.eclipsesource.minimal-json:minimal-json:0.9.4 - https://github.com/ralfstx/minimal-json)
-
========================================================================
BSD-style licenses
========================================================================
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/scheduler/Job.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/scheduler/Job.java
index 4c8c70a4af6..c803d78f26f 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/scheduler/Job.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/scheduler/Job.java
@@ -37,7 +37,6 @@
* and saving/loading jobs from disk.
* Changing/adding/deleting non transitive field name need consideration of that.
*
- * @author Leemoonsoo
*/
public abstract class Job {
/**
diff --git a/zeppelin-server/pom.xml b/zeppelin-server/pom.xml
index 0563374da5a..e77ee6ca38d 100644
--- a/zeppelin-server/pom.xml
+++ b/zeppelin-server/pom.xml
@@ -197,6 +197,22 @@
2.2.1
+
+ com.sun.jersey
+ jersey-servlet
+ 1.13
+
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ 2.0-m10
+
+
+
+ org.scala-lang
+ scala-library
+
org.seleniumhq.selenium
@@ -240,23 +256,6 @@
test
-
- com.sun.jersey
- jersey-servlet
- 1.13
-
-
-
- javax.ws.rs
- javax.ws.rs-api
- 2.0-m10
-
-
-
- org.scala-lang
- scala-library
-
-
org.scalatest
scalatest_2.10
@@ -268,6 +267,7 @@
org.mockito
mockito-all
1.9.0
+ test
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
index d9e7cf70d0c..fb4e99473a7 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
@@ -22,19 +22,29 @@
import java.util.List;
import java.util.Map;
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.apache.commons.lang3.StringUtils;
-import org.apache.zeppelin.display.Input;
import org.apache.zeppelin.interpreter.InterpreterSetting;
import org.apache.zeppelin.notebook.Note;
import org.apache.zeppelin.notebook.Notebook;
import org.apache.zeppelin.notebook.Paragraph;
-import org.apache.zeppelin.rest.message.*;
+import org.apache.zeppelin.rest.message.CronRequest;
+import org.apache.zeppelin.rest.message.InterpreterSettingListForNoteBind;
+import org.apache.zeppelin.rest.message.NewNotebookRequest;
+import org.apache.zeppelin.rest.message.NewParagraphRequest;
+import org.apache.zeppelin.rest.message.RunParagraphWithParametersRequest;
+import org.apache.zeppelin.search.SearchService;
import org.apache.zeppelin.server.JsonResponse;
-import org.apache.zeppelin.server.ZeppelinServer;
import org.apache.zeppelin.socket.NotebookServer;
import org.quartz.CronExpression;
import org.slf4j.Logger;
@@ -49,17 +59,18 @@
@Path("/notebook")
@Produces("application/json")
public class NotebookRestApi {
- Logger logger = LoggerFactory.getLogger(NotebookRestApi.class);
+ private static final Logger LOG = LoggerFactory.getLogger(NotebookRestApi.class);
Gson gson = new Gson();
private Notebook notebook;
private NotebookServer notebookServer;
+ private SearchService notebookIndex;
public NotebookRestApi() {}
- public NotebookRestApi(Notebook notebook, NotebookServer notebookServer) {
-
+ public NotebookRestApi(Notebook notebook, NotebookServer notebookServer, SearchService search) {
this.notebook = notebook;
this.notebookServer = notebookServer;
+ this.notebookIndex = search;
}
/**
@@ -71,7 +82,7 @@ public NotebookRestApi(Notebook notebook, NotebookServer notebookServer) {
public Response bind(@PathParam("noteId") String noteId, String req) throws IOException {
List settingIdList = gson.fromJson(req, new TypeToken>(){}.getType());
notebook.bindInterpretersToNote(noteId, settingIdList);
- return new JsonResponse(Status.OK).build();
+ return new JsonResponse<>(Status.OK).build();
}
/**
@@ -114,14 +125,14 @@ public Response bind(@PathParam("noteId") String noteId) {
);
}
}
- return new JsonResponse(Status.OK, "", settingList).build();
+ return new JsonResponse<>(Status.OK, "", settingList).build();
}
@GET
@Path("/")
public Response getNotebookList() throws IOException {
List