diff --git a/server/src/main/java/com/github/awrb/solr/services/data/SolrQueryParams.java b/server/src/main/java/com/github/awrb/solr/services/data/SolrQueryParams.java
index 5cc47a1..367b2c7 100644
--- a/server/src/main/java/com/github/awrb/solr/services/data/SolrQueryParams.java
+++ b/server/src/main/java/com/github/awrb/solr/services/data/SolrQueryParams.java
@@ -1,5 +1,7 @@
package com.github.awrb.solr.services.data;
+import org.apache.solr.common.StringUtils;
+import org.apache.solr.common.params.CursorMarkParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
@@ -15,7 +17,9 @@ public class SolrQueryParams {
private String reviewerName = MATCH_ALL;
private String summary = MATCH_ALL;
private String asin = MATCH_ALL;
+ private int start;
private Sort sort = Sort.DESC;
+ private String nextCursorMark;
private int rows = DEFAULT_ROW_COUNT;
@@ -27,6 +31,10 @@ public class SolrQueryParams {
this.reviewText = reviewText;
}
+ public void setNextCursorMark(String nextCursorMark) {
+ this.nextCursorMark = nextCursorMark;
+ }
+
public void setRows(int rows) {
this.rows = rows;
}
@@ -47,11 +55,25 @@ public class SolrQueryParams {
this.sort = sort;
}
+ public void setStart(int start) {
+ this.start = start;
+ }
+
public SolrParams toSolrParams() {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("q", buildQ());
params.set("rows", rows);
+
+ if (start > 0) {
+ params.set("start", start);
+ }
+
+// params.set(CursorMarkParams.CURSOR_MARK_PARAM, "*");
+// if (!StringUtils.isEmpty(nextCursorMark)) {
+// ModifiableSolrParams set = params.set(CursorMarkParams.CURSOR_MARK_NEXT, nextCursorMark);
+// }
// params.set("sort", "overall " + sort.label);
+
System.out.println(params.toQueryString());
return params;
}
@@ -67,6 +89,7 @@ public class SolrQueryParams {
.append(" asin:")
.append(asin)
.append(")");
+
// The query string ends up looking like this: (reviewText:* reviewerName:* summary:*)
// OR between parameters
System.out.println(sb.toString());
diff --git a/ui/solr/src/components/App.js b/ui/solr/src/components/App.js
index 96c0344..3b952de 100644
--- a/ui/solr/src/components/App.js
+++ b/ui/solr/src/components/App.js
@@ -1,6 +1,7 @@
import React, { useState } from "react";
import SearchBar from "./SearchBar";
import SearchResult from "./SearchResult";
+import PageArrows from "./PageArrows";
import SortSelect from "./SortSelect";
import solr from "../api/solr";
import { List, CircularProgress, Grid } from "@material-ui/core";
@@ -12,6 +13,9 @@ import PaginationSelect from "./PaginationSelect";
const useStyles = makeStyles({
loader: { margin: 20 },
select: { marginLeft: "3vw" },
+ center: {
+ marginLeft: "50%",
+ },
});
const App = () => {
@@ -21,6 +25,7 @@ const App = () => {
const [term, setTerm] = useState("");
const [sort, setSort] = useState(Constants.DESC);
const [rows, setRows] = useState(10);
+ const [page, setPage] = useState(1);
const classes = useStyles();
@@ -34,14 +39,20 @@ const App = () => {
[Constants.SORT]: sort,
};
+ if (page > 1) {
+ params[Constants.START] = (page - 1) * rows;
+ }
+
+ const searchTerm = "*" + term + "*";
+
if (filter === Constants.REVIEW_TEXT) {
- params[Constants.REVIEW_TEXT] = term;
+ params[Constants.REVIEW_TEXT] = searchTerm;
} else if (filter === Constants.REVIEWER_NAME) {
- params[Constants.REVIEWER_NAME] = term;
+ params[Constants.REVIEWER_NAME] = searchTerm;
} else if (filter === Constants.SUMMARY) {
- params[Constants.SUMMARY] = term;
+ params[Constants.SUMMARY] = searchTerm;
} else {
- params[Constants.ASIN] = term;
+ params[Constants.ASIN] = searchTerm;
}
return params;
@@ -60,12 +71,13 @@ const App = () => {
{results.map((result) => (