mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
Revert experimental changes
This commit is contained in:
parent
c67a635103
commit
bbe4b5d9fd
@ -294,105 +294,4 @@ public class SearchOperator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DecoratedSearchResults doSearchFastTrack1(SearchParameters userParams) {
|
|
||||||
var queryParams = paramFactory.forRegularSearch(userParams);
|
|
||||||
QueryResponse queryResponse = queryClient.search(queryParams);
|
|
||||||
var queryResults = getResultsFromQuery(queryResponse).results;
|
|
||||||
|
|
||||||
// Cluster the results based on the query response
|
|
||||||
List<ClusteredUrlDetails> clusteredResults = SearchResultClusterer
|
|
||||||
.selectStrategy(queryResponse)
|
|
||||||
.clusterResults(queryResults, 25);
|
|
||||||
|
|
||||||
String focusDomain = queryResponse.domain();
|
|
||||||
int focusDomainId = (focusDomain == null || focusDomain.isBlank())
|
|
||||||
? -1
|
|
||||||
: domainQueries.tryGetDomainId(new EdgeDomain(focusDomain)).orElse(0);
|
|
||||||
|
|
||||||
List<ResultsPage> resultPages = IntStream.rangeClosed(1, queryResponse.totalPages())
|
|
||||||
.mapToObj(number -> new ResultsPage(
|
|
||||||
number,
|
|
||||||
number == userParams.page(),
|
|
||||||
userParams.withPage(number).renderUrl()
|
|
||||||
))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
// Return the results to the user
|
|
||||||
return DecoratedSearchResults.builder()
|
|
||||||
.params(userParams)
|
|
||||||
.problems(List.of())
|
|
||||||
.evalResult("")
|
|
||||||
.results(clusteredResults)
|
|
||||||
.filters(new SearchFilters(userParams))
|
|
||||||
.focusDomain(focusDomain)
|
|
||||||
.focusDomainId(focusDomainId)
|
|
||||||
.resultPages(resultPages)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
public DecoratedSearchResults doSearchFastTrack2(SearchParameters userParams) {
|
|
||||||
var queryParams = paramFactory.forRegularSearch(userParams);
|
|
||||||
QueryResponse queryResponse = queryClient.search(queryParams);
|
|
||||||
var queryResults = getResultsFromQuery(queryResponse).results;
|
|
||||||
|
|
||||||
// Cluster the results based on the query response
|
|
||||||
List<ClusteredUrlDetails> clusteredResults = SearchResultClusterer
|
|
||||||
.noOpClustering(queryResults, queryResults.size());
|
|
||||||
|
|
||||||
String focusDomain = queryResponse.domain();
|
|
||||||
int focusDomainId = (focusDomain == null || focusDomain.isBlank())
|
|
||||||
? -1
|
|
||||||
: domainQueries.tryGetDomainId(new EdgeDomain(focusDomain)).orElse(0);
|
|
||||||
|
|
||||||
List<ResultsPage> resultPages = IntStream.rangeClosed(1, queryResponse.totalPages())
|
|
||||||
.mapToObj(number -> new ResultsPage(
|
|
||||||
number,
|
|
||||||
number == userParams.page(),
|
|
||||||
userParams.withPage(number).renderUrl()
|
|
||||||
))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
// Return the results to the user
|
|
||||||
return DecoratedSearchResults.builder()
|
|
||||||
.params(userParams)
|
|
||||||
.problems(List.of())
|
|
||||||
.evalResult("")
|
|
||||||
.results(clusteredResults)
|
|
||||||
.filters(new SearchFilters(userParams))
|
|
||||||
.focusDomain(focusDomain)
|
|
||||||
.focusDomainId(focusDomainId)
|
|
||||||
.resultPages(resultPages)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public DecoratedSearchResults doSearchFastTrack3(SearchParameters userParams) {
|
|
||||||
var queryParams = paramFactory.forRegularSearch(userParams);
|
|
||||||
QueryResponse queryResponse = queryClient.search(queryParams);
|
|
||||||
var queryResults = getResultsFromQuery(queryResponse).results;
|
|
||||||
|
|
||||||
// Cluster the results based on the query response
|
|
||||||
List<ClusteredUrlDetails> clusteredResults = SearchResultClusterer
|
|
||||||
.noOpClustering(queryResults, queryResults.size());
|
|
||||||
|
|
||||||
List<ResultsPage> resultPages = IntStream.rangeClosed(1, queryResponse.totalPages())
|
|
||||||
.mapToObj(number -> new ResultsPage(
|
|
||||||
number,
|
|
||||||
number == userParams.page(),
|
|
||||||
userParams.withPage(number).renderUrl()
|
|
||||||
))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
// Return the results to the user
|
|
||||||
return DecoratedSearchResults.builder()
|
|
||||||
.params(userParams)
|
|
||||||
.problems(List.of())
|
|
||||||
.evalResult("")
|
|
||||||
.results(clusteredResults)
|
|
||||||
.filters(new SearchFilters(userParams))
|
|
||||||
.focusDomain(null)
|
|
||||||
.focusDomainId(-1)
|
|
||||||
.resultPages(resultPages)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,13 @@ public class SearchResultClusterer {
|
|||||||
|
|
||||||
public static SearchResultClusterStrategy selectStrategy(QueryResponse response) {
|
public static SearchResultClusterStrategy selectStrategy(QueryResponse response) {
|
||||||
if (response.domain() != null && !response.domain().isBlank())
|
if (response.domain() != null && !response.domain().isBlank())
|
||||||
return SearchResultClusterer::noOpClustering;
|
return SearchResultClusterer::noOp;
|
||||||
|
|
||||||
return SearchResultClusterer::byDomain;
|
return SearchResultClusterer::byDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** No clustering, just return the results as is */
|
/** No clustering, just return the results as is */
|
||||||
public static List<ClusteredUrlDetails> noOpClustering(List<UrlDetails> results, int total) {
|
private static List<ClusteredUrlDetails> noOp(List<UrlDetails> results, int total) {
|
||||||
if (results.isEmpty())
|
if (results.isEmpty())
|
||||||
return List.of();
|
return List.of();
|
||||||
|
|
||||||
|
@ -21,8 +21,7 @@ public record SearchParameters(WebsiteUrl url,
|
|||||||
SearchTitleParameter searchTitle,
|
SearchTitleParameter searchTitle,
|
||||||
SearchAdtechParameter adtech,
|
SearchAdtechParameter adtech,
|
||||||
boolean newFilter,
|
boolean newFilter,
|
||||||
int page,
|
int page
|
||||||
int debug
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
public static SearchParameters defaultsForQuery(WebsiteUrl url, String query, int page) {
|
public static SearchParameters defaultsForQuery(WebsiteUrl url, String query, int page) {
|
||||||
@ -35,8 +34,7 @@ public record SearchParameters(WebsiteUrl url,
|
|||||||
SearchTitleParameter.DEFAULT,
|
SearchTitleParameter.DEFAULT,
|
||||||
SearchAdtechParameter.DEFAULT,
|
SearchAdtechParameter.DEFAULT,
|
||||||
false,
|
false,
|
||||||
page,
|
page);
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String profileStr() {
|
public String profileStr() {
|
||||||
@ -44,30 +42,30 @@ public record SearchParameters(WebsiteUrl url,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withProfile(SearchProfile profile) {
|
public SearchParameters withProfile(SearchProfile profile) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withJs(SearchJsParameter js) {
|
public SearchParameters withJs(SearchJsParameter js) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page);
|
||||||
}
|
}
|
||||||
public SearchParameters withAdtech(SearchAdtechParameter adtech) {
|
public SearchParameters withAdtech(SearchAdtechParameter adtech) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withRecent(SearchRecentParameter recent) {
|
public SearchParameters withRecent(SearchRecentParameter recent) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withTitle(SearchTitleParameter title) {
|
public SearchParameters withTitle(SearchTitleParameter title) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, title, adtech, true, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, title, adtech, true, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withPage(int page) {
|
public SearchParameters withPage(int page) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchParameters withQuery(String query) {
|
public SearchParameters withQuery(String query) {
|
||||||
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page, debug);
|
return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String renderUrlWithoutSiteFocus() {
|
public String renderUrlWithoutSiteFocus() {
|
||||||
|
@ -3,52 +3,34 @@ package nu.marginalia.search.command.commands;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import io.jooby.MapModelAndView;
|
import io.jooby.MapModelAndView;
|
||||||
import io.jooby.ModelAndView;
|
import io.jooby.ModelAndView;
|
||||||
|
import nu.marginalia.search.JteRenderer;
|
||||||
import nu.marginalia.search.SearchOperator;
|
import nu.marginalia.search.SearchOperator;
|
||||||
import nu.marginalia.search.command.SearchCommandInterface;
|
import nu.marginalia.search.command.SearchCommandInterface;
|
||||||
import nu.marginalia.search.command.SearchParameters;
|
import nu.marginalia.search.command.SearchParameters;
|
||||||
import nu.marginalia.search.model.DecoratedSearchResults;
|
import nu.marginalia.search.model.DecoratedSearchResults;
|
||||||
import nu.marginalia.search.model.NavbarModel;
|
import nu.marginalia.search.model.NavbarModel;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class SearchCommand implements SearchCommandInterface {
|
public class SearchCommand implements SearchCommandInterface {
|
||||||
private final SearchOperator searchOperator;
|
private final SearchOperator searchOperator;
|
||||||
|
private final JteRenderer jteRenderer;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SearchCommand(SearchOperator searchOperator) {
|
public SearchCommand(SearchOperator searchOperator,
|
||||||
|
JteRenderer jteRenderer) throws IOException {
|
||||||
this.searchOperator = searchOperator;
|
this.searchOperator = searchOperator;
|
||||||
|
this.jteRenderer = jteRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<ModelAndView<?>> process(SearchParameters parameters) throws InterruptedException {
|
public Optional<ModelAndView<?>> process(SearchParameters parameters) throws InterruptedException {
|
||||||
if (parameters.debug() == 0) {
|
|
||||||
DecoratedSearchResults results = searchOperator.doSearch(parameters);
|
DecoratedSearchResults results = searchOperator.doSearch(parameters);
|
||||||
return Optional.of(new MapModelAndView("serp/main.jte",
|
return Optional.of(new MapModelAndView("serp/main.jte",
|
||||||
Map.of("results", results, "navbar", NavbarModel.SEARCH)
|
Map.of("results", results, "navbar", NavbarModel.SEARCH)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if (parameters.debug() == 1) {
|
|
||||||
DecoratedSearchResults results = searchOperator.doSearchFastTrack1(parameters);
|
|
||||||
return Optional.of(new MapModelAndView("serp/main.jte",
|
|
||||||
Map.of("results", results, "navbar", NavbarModel.SEARCH)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if (parameters.debug() == 2) {
|
|
||||||
DecoratedSearchResults results = searchOperator.doSearchFastTrack2(parameters);
|
|
||||||
return Optional.of(new MapModelAndView("serp/main.jte",
|
|
||||||
Map.of("results", results, "navbar", NavbarModel.SEARCH)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if (parameters.debug() == 3) {
|
|
||||||
DecoratedSearchResults results = searchOperator.doSearchFastTrack3(parameters);
|
|
||||||
return Optional.of(new MapModelAndView("serp/main.jte",
|
|
||||||
Map.of("results", results, "navbar", NavbarModel.SEARCH)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,7 @@ public class SearchFilters {
|
|||||||
SearchTitleParameter.DEFAULT,
|
SearchTitleParameter.DEFAULT,
|
||||||
SearchAdtechParameter.DEFAULT,
|
SearchAdtechParameter.DEFAULT,
|
||||||
false,
|
false,
|
||||||
1,
|
1));
|
||||||
0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchFilters(SearchParameters parameters) {
|
public SearchFilters(SearchParameters parameters) {
|
||||||
|
@ -39,8 +39,7 @@ public class SearchQueryService {
|
|||||||
@QueryParam String recent,
|
@QueryParam String recent,
|
||||||
@QueryParam String searchTitle,
|
@QueryParam String searchTitle,
|
||||||
@QueryParam String adtech,
|
@QueryParam String adtech,
|
||||||
@QueryParam Integer page,
|
@QueryParam Integer page
|
||||||
@QueryParam Integer debug
|
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
SearchParameters parameters = new SearchParameters(websiteUrl,
|
SearchParameters parameters = new SearchParameters(websiteUrl,
|
||||||
@ -51,9 +50,7 @@ public class SearchQueryService {
|
|||||||
SearchTitleParameter.parse(searchTitle),
|
SearchTitleParameter.parse(searchTitle),
|
||||||
SearchAdtechParameter.parse(adtech),
|
SearchAdtechParameter.parse(adtech),
|
||||||
false,
|
false,
|
||||||
Objects.requireNonNullElse(page,1),
|
Objects.requireNonNullElse(page,1));
|
||||||
Objects.requireNonNullElse(debug,0)
|
|
||||||
);
|
|
||||||
|
|
||||||
return searchCommandEvaulator.eval(parameters);
|
return searchCommandEvaulator.eval(parameters);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user