fixed passing on of quoted keyword queries through REST API

Change-Id: I2cb64dca46d7688ec5224dd17ef04f50249d5e45
This commit is contained in:
Axel Uhl
2018-10-09 17:57:48 +02:00
parent d47028bea4
commit 52c819d6e7
4 changed files with 16 additions and 4 deletions
@@ -45,11 +45,14 @@ public class GetSearchResultsAction implements SailingAction<ListResult<SearchRe
public ListResult<SearchResultDTO> execute(SailingDispatchContext ctx) throws DispatchException {
KeywordQuery searchQuery = new KeywordQuery(Util.splitAlongWhitespaceRespectingDoubleQuotedPhrases(searchText));
RacingEventService service = ctx.getRacingEventService();
final ListResult<SearchResultDTO> result;
if (remoteServerName == null) {
return getListResult(service.search(searchQuery), ctx.getRequestBaseURL(), false);
result = getListResult(service.search(searchQuery), ctx.getRequestBaseURL(), false);
} else {
RemoteSailingServerReference remoteServer = service.getRemoteServerReferenceByName(remoteServerName);
result = getListResult(service.searchRemotely(remoteServerName, searchQuery), remoteServer.getURL(), true);
}
RemoteSailingServerReference remoteServer = service.getRemoteServerReferenceByName(remoteServerName);
return getListResult(service.searchRemotely(remoteServerName, searchQuery), remoteServer.getURL(), true);
return result;
}
@GwtIncompatible
@@ -4,6 +4,12 @@
<div id="mainContent">
<h4 class="articleHeadline">What's New - SAP Sailing Analytics</h4>
<div class="innerContent">
<h5 class="articleSubheadline">October 2018</h5>
<ul class="bulletList">
<li>Searching for phrases containing whitespace characters with double quotes such as "Tobias Schadewaldt" will now work
across a distributed server and event landscape.</li>
</ul>
<h5 class="articleSubheadline">August 2018</h5>
<ul class="bulletList">
<li>The windstreamlets are now colored dynamically according to the wind fields maximum and minimum wind speed.</li>
@@ -17,6 +17,7 @@ import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResultJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
import com.sap.sse.common.Util;
import com.sap.sse.common.search.KeywordQuery;
import com.sap.sse.common.search.Result;
@@ -37,7 +38,7 @@ public class SearchResource extends AbstractSailingServerResource {
@GET
@Produces("application/json;charset=UTF-8")
public Response search(@QueryParam("q") String keywords) {
KeywordQuery query = new KeywordQuery(keywords.split(" "));
KeywordQuery query = new KeywordQuery(Util.splitAlongWhitespaceRespectingDoubleQuotedPhrases(keywords));
Iterable<LeaderboardSearchResult> searchResults = search(query).getHits();
JSONArray jsonSearchResults = new JSONArray();
for (LeaderboardSearchResult searchResult : searchResults) {
@@ -45,7 +45,9 @@ public class KeywordQuery implements Query, Serializable {
} else {
sb.append(' ');
}
sb.append('"');
sb.append(keyword);
sb.append('"');
}
return sb.toString();
}