diff --git a/library/src/main/java/io/constructor/core/Constants.kt b/library/src/main/java/io/constructor/core/Constants.kt index 0b7ccc5b..d2229fe9 100755 --- a/library/src/main/java/io/constructor/core/Constants.kt +++ b/library/src/main/java/io/constructor/core/Constants.kt @@ -29,6 +29,8 @@ class Constants { const val TERM_UNKNOWN = "TERM_UNKNOWN" const val PAGE = "page" const val PER_PAGE = "num_results_per_page" + const val SORT_BY = "sort_by" + const val SORT_ORDER = "sort_order" const val FILTER_GROUP_ID = "filters[group_id]" const val FILTER_FACET = "filters[%s]" const val RESULT_ID = "result_id" diff --git a/library/src/main/java/io/constructor/core/ConstructorIo.kt b/library/src/main/java/io/constructor/core/ConstructorIo.kt index 6ddaeeb5..b2a0e689 100755 --- a/library/src/main/java/io/constructor/core/ConstructorIo.kt +++ b/library/src/main/java/io/constructor/core/ConstructorIo.kt @@ -85,6 +85,9 @@ object ConstructorIo { preferenceHelper.getSessionId(sessionIncrementHandler) } + /** + * Returns a list of autocomplete suggestions + */ fun getAutocompleteResults(query: String): Observable?>> { val params = mutableListOf>() configMemoryHolder.autocompleteResultCount?.entries?.forEach { @@ -93,13 +96,17 @@ object ConstructorIo { return dataManager.getAutocompleteResults(query, params.toTypedArray()) } - fun getSearchResults(text: String, vararg facets: Pair>, page: Int? = null, perPage: Int? = null, groupId: Int? = null): Observable> { - preferenceHelper.getSessionId(sessionIncrementHandler) + /** + * Returns search results including filters, categories, sort options, etc. + */ + fun getSearchResults(text: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null): Observable> { val encodedParams: ArrayList> = arrayListOf() groupId?.let { encodedParams.add(Constants.QueryConstants.FILTER_GROUP_ID.urlEncode() to it.toString()) } page?.let { encodedParams.add(Constants.QueryConstants.PAGE.urlEncode() to page.toString().urlEncode()) } perPage?.let { encodedParams.add(Constants.QueryConstants.PER_PAGE.urlEncode() to perPage.toString().urlEncode()) } - facets.forEach { facet -> + sortBy?.let { encodedParams.add(Constants.QueryConstants.SORT_BY.urlEncode() to it.urlEncode()) } + sortOrder?.let { encodedParams.add(Constants.QueryConstants.SORT_ORDER.urlEncode() to it.urlEncode()) } + facets?.forEach { facet -> facet.second.forEach { encodedParams.add(Constants.QueryConstants.FILTER_FACET.format(facet.first).urlEncode() to it.urlEncode()) } diff --git a/library/src/main/java/io/constructor/data/model/dataadapter/ResultDataAdapter.kt b/library/src/main/java/io/constructor/data/model/dataadapter/ResultDataAdapter.kt new file mode 100644 index 00000000..3a40fefe --- /dev/null +++ b/library/src/main/java/io/constructor/data/model/dataadapter/ResultDataAdapter.kt @@ -0,0 +1,56 @@ +package io.constructor.data.model.dataadapter + +import com.squareup.moshi.FromJson +import com.squareup.moshi.JsonAdapter +import com.squareup.moshi.JsonReader +import io.constructor.data.model.Group +import io.constructor.data.model.search.ResultData +import io.constructor.data.model.search.ResultFacet + +class ResultDataAdapter { + + companion object { + val NAMES = JsonReader.Options.of("id", "description", "image_url", "url", "facets", "groups") + } + + @FromJson fun fromJson(jsonReader: JsonReader, facetDelegate: JsonAdapter>, groupDelegate: JsonAdapter>): ResultData { + jsonReader.beginObject() + var metadata: HashMap = hashMapOf() + var id = "" + var description: String? = null + var imageUrl: String? = null + var url: String? = null + var facets: List? = null + var groups: List? = null + while (jsonReader.hasNext()) { + when (jsonReader.selectName(NAMES)) { + 0 -> { + id = jsonReader.nextString() + } + 1 -> { + description = jsonReader.nextString() + } + 2 -> { + imageUrl = jsonReader.nextString() + } + 3 -> { + url = jsonReader.nextString() + + } + 4 -> { + facets = facetDelegate.fromJsonValue(jsonReader.readJsonValue()) + } + 5 -> { + groups = groupDelegate.fromJsonValue(jsonReader.readJsonValue()) + } + else -> { + metadata[jsonReader.nextName()] = jsonReader.readJsonValue() + } + } + } + jsonReader.endObject() + return ResultData(description, id, imageUrl, url, facets, groups, metadata) + + } + +} \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/model/search/FacetOption.kt b/library/src/main/java/io/constructor/data/model/search/FacetOption.kt index 3900e7c5..756ed5c8 100644 --- a/library/src/main/java/io/constructor/data/model/search/FacetOption.kt +++ b/library/src/main/java/io/constructor/data/model/search/FacetOption.kt @@ -1,3 +1,5 @@ package io.constructor.data.model.search -data class FacetOption(val count: Int, val value: String?) \ No newline at end of file +import java.io.Serializable + +data class FacetOption(val count: Int, val value: String?) : Serializable \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/model/search/ResultData.kt b/library/src/main/java/io/constructor/data/model/search/ResultData.kt index 5595199e..f486478e 100644 --- a/library/src/main/java/io/constructor/data/model/search/ResultData.kt +++ b/library/src/main/java/io/constructor/data/model/search/ResultData.kt @@ -2,6 +2,7 @@ package io.constructor.data.model.search import com.squareup.moshi.Json import io.constructor.data.model.Group +import java.io.Serializable data class ResultData(val description: String?, val id: String, @@ -9,4 +10,4 @@ data class ResultData(val description: String?, val url: String?, val facets: List?, val groups: List?, - var metadata: Map?) \ No newline at end of file + var metadata: Map) : Serializable \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/model/search/ResultFacet.kt b/library/src/main/java/io/constructor/data/model/search/ResultFacet.kt index d92e7986..c917049a 100644 --- a/library/src/main/java/io/constructor/data/model/search/ResultFacet.kt +++ b/library/src/main/java/io/constructor/data/model/search/ResultFacet.kt @@ -1,3 +1,5 @@ package io.constructor.data.model.search -data class ResultFacet(val name: String, val values: List?) +import java.io.Serializable + +data class ResultFacet(val name: String, val values: List?) : Serializable diff --git a/library/src/main/java/io/constructor/data/model/search/SearchData.kt b/library/src/main/java/io/constructor/data/model/search/SearchData.kt index f40a9a98..c7755287 100644 --- a/library/src/main/java/io/constructor/data/model/search/SearchData.kt +++ b/library/src/main/java/io/constructor/data/model/search/SearchData.kt @@ -3,4 +3,4 @@ package io.constructor.data.model.search import com.squareup.moshi.Json -data class SearchData(val facets: List?, val groups: List?, val results: List?, @Json(name = "total_num_results") val resultCount: Int) +data class SearchData(val facets: List?, val groups: List?, @Json(name = "results") val searchResults: List?, @Json(name = "sort_options") val sortOptions: List? = null, @Json(name = "total_num_results") val resultCount: Int) diff --git a/library/src/main/java/io/constructor/data/model/search/SearchFacet.kt b/library/src/main/java/io/constructor/data/model/search/SearchFacet.kt index fa861f52..f934dba8 100644 --- a/library/src/main/java/io/constructor/data/model/search/SearchFacet.kt +++ b/library/src/main/java/io/constructor/data/model/search/SearchFacet.kt @@ -1,11 +1,12 @@ package io.constructor.data.model.search import com.squareup.moshi.Json +import java.io.Serializable data class SearchFacet(val name: String, @Json(name = "display_name") val displayName: String?, val status: Map?, val type: String?, - val min: Int?, - val max: Int?, - val options: List?) + val min: Double?, + val max: Double?, + val options: List?) : Serializable diff --git a/library/src/main/java/io/constructor/data/model/search/SearchGroup.kt b/library/src/main/java/io/constructor/data/model/search/SearchGroup.kt index 8dbe9fa2..a580ef70 100644 --- a/library/src/main/java/io/constructor/data/model/search/SearchGroup.kt +++ b/library/src/main/java/io/constructor/data/model/search/SearchGroup.kt @@ -4,6 +4,6 @@ import com.squareup.moshi.Json data class SearchGroup(@Json(name = "children") val children: List?, @Json(name = "parents") val parents: List?, - val count: Int, + val count: Int?, @Json(name = "display_name") val displayName: String, - @Json(name = "group_id") val groupId: Long) \ No newline at end of file + @Json(name = "group_id") val groupId: String) \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/model/search/SearchResult.kt b/library/src/main/java/io/constructor/data/model/search/SearchResult.kt new file mode 100644 index 00000000..8652b381 --- /dev/null +++ b/library/src/main/java/io/constructor/data/model/search/SearchResult.kt @@ -0,0 +1,6 @@ +package io.constructor.data.model.search + +import com.squareup.moshi.Json +import java.io.Serializable + +data class SearchResult(@Json(name = "data") val result: ResultData, @Json(name = "matched_terms") val matchedTerms: List?, val value: String) : Serializable diff --git a/library/src/main/java/io/constructor/data/model/search/SortOption.kt b/library/src/main/java/io/constructor/data/model/search/SortOption.kt new file mode 100644 index 00000000..1a674ada --- /dev/null +++ b/library/src/main/java/io/constructor/data/model/search/SortOption.kt @@ -0,0 +1,10 @@ +package io.constructor.data.model.search + +import com.squareup.moshi.Json +import java.io.Serializable + + +data class SortOption(@Json(name = "display_name") val displayName: String, + @Json(name = "sort_by") val sortBy: String, + @Json(name = "sort_order") val sortOrder: String, + val status: String) : Serializable diff --git a/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt b/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt index 8035f2b2..4e0203bf 100755 --- a/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt +++ b/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt @@ -11,25 +11,40 @@ import retrofit2.http.* interface ConstructorApi { @GET(ApiPaths.URL_AUTOCOMPLETE) - fun getAutocompleteResults(@Path("value") value: String, @QueryMap data: Map): Single> + fun getAutocompleteResults(@Path("value") value: String, + @QueryMap data: Map): Single> @GET(ApiPaths.URL_AUTOCOMPLETE_SELECT_EVENT) - fun trackAutocompleteSelect(@Path("term") term: String, @QueryMap data: Map, @QueryMap(encoded = true) encodedData: Map): Completable + fun trackAutocompleteSelect(@Path("term") term: String, + @QueryMap data: Map, + @QueryMap(encoded = true) encodedData: Map): Completable @GET(ApiPaths.URL_SEARCH_SUBMIT_EVENT) - fun trackSearchSubmit(@Path("term") term: String, @QueryMap data: Map, @QueryMap(encoded = true) encodedData: Map): Completable + fun trackSearchSubmit(@Path("term") term: String, + @QueryMap data: Map, + @QueryMap(encoded = true) encodedData: Map): Completable @GET(ApiPaths.URL_SESSION_START_EVENT) fun trackSessionStart(@QueryMap params: Map): Completable @GET(ApiPaths.URL_CONVERSION_EVENT) - fun trackConversion(@Path("term") term: String, @Query("name") itemName: String, @Query("customer_id") customerId: String, @Query("revenue") revenue: String?, @QueryMap params: Map): Completable + fun trackConversion(@Path("term") term: String, + @Query("name") itemName: String, + @Query("customer_id") customerId: String, + @Query("revenue") revenue: String?, + @QueryMap params: Map): Completable @GET(ApiPaths.URL_SEARCH_RESULT_CLICK_EVENT) - fun trackSearchResultClick(@Path("term") term: String, @Query("name") itemName: String, @Query("customer_id") customerId: String, @QueryMap params: Map, @QueryMap(encoded = true) encodedData: Map): Completable + fun trackSearchResultClick(@Path("term") term: String, + @Query("name") itemName: String, + @Query("customer_id") customerId: String, + @QueryMap params: Map, + @QueryMap(encoded = true) encodedData: Map): Completable @GET(ApiPaths.URL_BEHAVIOR) - fun trackSearchResultsLoaded(@Query("term") term: String, @Query("num_results") resultCount: Int, @QueryMap params: Map): Completable + fun trackSearchResultsLoaded(@Query("term") term: String, + @Query("num_results") resultCount: Int, + @QueryMap params: Map): Completable @GET(ApiPaths.URL_BEHAVIOR) fun trackInputFocus(@Query("term") term: String?, @QueryMap params: Map): Completable diff --git a/library/src/main/java/io/constructor/injection/module/NetworkModule.kt b/library/src/main/java/io/constructor/injection/module/NetworkModule.kt index b1008f12..e205e9c2 100755 --- a/library/src/main/java/io/constructor/injection/module/NetworkModule.kt +++ b/library/src/main/java/io/constructor/injection/module/NetworkModule.kt @@ -9,6 +9,7 @@ import io.constructor.BuildConfig import io.constructor.data.interceptor.RequestInterceptor import io.constructor.data.local.PreferencesHelper import io.constructor.data.memory.ConfigMemoryHolder +import io.constructor.data.model.dataadapter.ResultDataAdapter import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit @@ -56,6 +57,7 @@ class NetworkModule(private val context: Context) { @Singleton internal fun provideMoshi(): Moshi = Moshi .Builder() + .add(ResultDataAdapter()) .add(KotlinJsonAdapterFactory()) .build() } \ No newline at end of file diff --git a/library/src/test/java/io/constructor/core/ConstructorIoAutocompleteTest.kt b/library/src/test/java/io/constructor/core/ConstructorIoAutocompleteTest.kt index 34a9e66b..acb05f2e 100644 --- a/library/src/test/java/io/constructor/core/ConstructorIoAutocompleteTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorIoAutocompleteTest.kt @@ -88,19 +88,6 @@ class ConstructorIoAutocompleteTest { assert(request.path.startsWith(path)) } - @Test - fun getAutocompleteResultsWithUnexpectedResponse() { - val mockResponse = MockResponse().setResponseCode(200).setBody(TestDataLoader.loadAsString("autocomplete_response_with_unexpected_data.json")) - mockServer.enqueue(mockResponse) - val observer = constructorIo.getAutocompleteResults("titanic").test() - observer.assertComplete().assertValue { - it.get()!!.isNotEmpty() && it.get()!!.size == 5 - } - val request = mockServer.takeRequest() - val path = "/autocomplete/titanic?key=golden-key&i=guido-the-guid&ui=player-one&s=79&c=cioand-1.3.0&_dt=" - assert(request.path.startsWith(path)) - } - @Test fun getAutocompleteResultsWithEmptyResponse() { val mockResponse = MockResponse().setResponseCode(200).setBody(TestDataLoader.loadAsString("autocomplete_response_empty.json")) diff --git a/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt b/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt index 819852bb..10c0e204 100644 --- a/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt @@ -54,7 +54,17 @@ class ConstructorIoSearchTest { mockServer.enqueue(mockResponse) val observer = constructorIo.getSearchResults("corn").test() observer.assertComplete().assertValue { - it.get()!!.searchData.results!!.size == 20 + it.get()!!.searchData.searchResults!!.size == 24 + it.get()!!.searchData.searchResults!![0].value == "Del Monte Fresh Cut Corn Whole Kernel Golden Sweet with Natural Sea Salt - 15.25 Oz" + it.get()!!.searchData.searchResults!![0].result.id == "121150086" + it.get()!!.searchData.searchResults!![0].result.imageUrl == "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150086.png" + it.get()!!.searchData.searchResults!![0].result.metadata["price"] == 2.29 + it.get()!!.searchData.searchResults!![0].matchedTerms!![0] == "corn" + it.get()!!.searchData.facets!!.size == 3 + it.get()!!.searchData.facets!![0].displayName == "Brand" + it.get()!!.searchData.facets!![0].type == "multiple" + it.get()!!.searchData.groups!!.size == 1 + it.get()!!.searchData.resultCount == 225 } val request = mockServer.takeRequest() val path = "/search/corn?key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-1.3.0&_dt=" @@ -88,26 +98,16 @@ class ConstructorIoSearchTest { assert(request.path.startsWith(path)) } - @Test - fun getSearchResultsWithUnexpectedResponse() { - val mockResponse = MockResponse().setResponseCode(200).setBody(TestDataLoader.loadAsString("search_response_unexpected_data.json")) - mockServer.enqueue(mockResponse) - val observer = constructorIo.getSearchResults("corn").test() - observer.assertComplete().assertValue { - it.get()!!.searchData.resultCount == 23 - } - val request = mockServer.takeRequest() - val path = "/search/corn?key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-1.3.0&_dt=" - assert(request.path.startsWith(path)) - } - @Test fun getSearchResultsWithEmptyResponse() { val mockResponse = MockResponse().setResponseCode(200).setBody(TestDataLoader.loadAsString("search_response_empty.json")) mockServer.enqueue(mockResponse) val observer = constructorIo.getSearchResults("corn").test() observer.assertComplete().assertValue { - it.get()!!.searchData.results!!.isEmpty() + it.get()!!.searchData.searchResults!!.isEmpty() + it.get()!!.searchData.facets!!.isEmpty() + it.get()!!.searchData.groups!!.isEmpty() + it.get()!!.searchData.resultCount == 0 } val request = mockServer.takeRequest() val path = "/search/corn?key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-1.3.0&_dt=" diff --git a/library/src/test/java/io/constructor/util/TestDataLoader.kt b/library/src/test/java/io/constructor/util/TestDataLoader.kt index 684130c0..58a6f1ac 100755 --- a/library/src/test/java/io/constructor/util/TestDataLoader.kt +++ b/library/src/test/java/io/constructor/util/TestDataLoader.kt @@ -15,8 +15,6 @@ object TestDataLoader { fun loadResponse() : AutocompleteResult? = loadResult("autocomplete_response.json") - fun loadResponseWithUnexpectedData() : AutocompleteResult? = loadResult("autocomplete_response_with_unexpected_data.json") - fun loadEmptyResponse() : AutocompleteResult? = loadResult("autocomplete_response_empty.json") private fun loadResult(fileName: String): AutocompleteResult? { diff --git a/library/src/test/resources/autocomplete_response_with_unexpected_data.json b/library/src/test/resources/autocomplete_response_with_unexpected_data.json deleted file mode 100755 index 49b88921..00000000 --- a/library/src/test/resources/autocomplete_response_with_unexpected_data.json +++ /dev/null @@ -1,520 +0,0 @@ -{ - "sections": { - "Products": [ - { - "data": { - "groups": [ - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - } - ], - "id": "raise the titanic", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/7cahPJXA1fRXRwqqMVQkX3MTZy3.jpg", - "url": "https://www.top250.tv/movies/24575" - }, - "matched_terms": [ - "titanic" - ], - "value": "Raise the Titanic" - }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null - } - ], - "id": "drain the titanic", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/2A9OPQHztBsfFRMzintaOhn4Rry.jpg", - "url": "https://www.top250.tv/movies/428950" - }, - "matched_terms": [ - "titanic" - ], - "value": "Drain the Titanic" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Romance", - "group_id": "10749", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - } - ], - "id": "titanic", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/kHXEpyfl6zqn8a6YuozZUujufXf.jpg", - "url": "https://www.top250.tv/movies/597" - }, - "matched_terms": [ - "titanic" - ], - "value": "Titanic" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - } - ], - "id": "titanic town", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zfx8YMEG3sR9t4rKYgOD3O0FoPN.jpg", - "url": "https://www.top250.tv/movies/83036" - }, - "matched_terms": [ - "titanic" - ], - "value": "Titanic Town" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - } - ], - "id": "the chambermaid on the titanic", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/jSsKHwtqk0XNdABR2R5wI3grfxV.jpg", - "url": "https://www.top250.tv/movies/115872" - }, - "matched_terms": [ - "titanic" - ], - "value": "The Chambermaid on the Titanic" - } - ], - "Search Suggestions": [ - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - }, - { - "display_name": "Mystery", - "group_id": "9648", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Foreign", - "group_id": "10769", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanics" - }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanica" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Romance", - "group_id": "10749", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null - }, - { - "display_name": "History", - "group_id": "36", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanic" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Animation", - "group_id": "16", - "path": null - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null - } - ] - }, - "matched_terms": [ - "titans" - ], - "value": "titans" - }, - { - "data": { - "groups": [ - { - "display_name": "Animation", - "group_id": "16", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null - }, - { - "display_name": "Drama", - "group_id": "18", - "path": null - } - ] - }, - "matched_terms": [ - "titan" - ], - "value": "titan" - } - ], - "Search-ish Suggest-ables": [ - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - }, - { - "display_name": "Mystery", - "group_id": "9648", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Foreign", - "group_id": "10769", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanics" - }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanica" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Romance", - "group_id": "10749", - "path": null - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null - }, - { - "display_name": "History", - "group_id": "36", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - } - ] - }, - "matched_terms": [ - "titanic" - ], - "value": "titanic" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Animation", - "group_id": "16", - "path": null - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null - } - ] - }, - "matched_terms": [ - "titans" - ], - "value": "titans" - }, - { - "data": { - "groups": [ - { - "display_name": "Animation", - "group_id": "16", - "path": null - }, - { - "display_name": "Action", - "group_id": "28", - "path": null - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null - }, - { - "display_name": "Family", - "group_id": "10751", - "path": null - }, - { - "display_name": "Adventure", - "group_id": "12", - "path": null - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null - }, - { - "display_name": "Drama", - "group_id": "18", - "path": null - } - ] - }, - "matched_terms": [ - "titan" - ], - "value": "titan" - } - ] - } -} \ No newline at end of file diff --git a/library/src/test/resources/search_response.json b/library/src/test/resources/search_response.json index 1cce0cbe..ebc0058e 100755 --- a/library/src/test/resources/search_response.json +++ b/library/src/test/resources/search_response.json @@ -1,598 +1,1383 @@ { "request": { - "ef-11": "22", - "ef-ab": "cd", + "feature_variants": { + "auto_generated_refined_query_rules": null, + "manual_searchandizing": null, + "personalization": null, + "query_items": null + }, + "features": { + "auto_generated_refined_query_rules": true, + "manual_searchandizing": true, + "personalization": true, + "query_items": true + }, "fmt_options": { "groups_max_depth": 1, "groups_start": "current" }, - "num_results_per_page": 20, + "num_results_per_page": 24, "page": 1, + "searchandized_items": {}, "section": "Products", "sort_by": "relevance", "sort_order": "descending", "term": "corn" }, "response": { - "facets": [], - "groups": [ - { - "children": [], - "count": 9, - "display_name": "Horror", - "group_id": "27", - "parents": [] - }, - { - "children": [], + "facets": [{ + "display_name": "Brand", + "name": "Brand", + "options": [{ + "count": 5, + "data": {}, + "display_name": "Del Monte", + "status": "", + "value": "Del Monte" + }, { + "count": 22, + "data": {}, + "display_name": "Signature Kitchens", + "status": "", + "value": "Signature Kitchens" + }, { + "count": 2, + "data": {}, + "display_name": "Signature Farms", + "status": "", + "value": "Signature Farms" + }, { + "count": 10, + "data": {}, + "display_name": "O Organics", + "status": "", + "value": "O Organics" + }, { "count": 7, - "display_name": "Thriller", - "group_id": "53", - "parents": [] - }, - { - "children": [], + "data": {}, + "display_name": "Signature Select", + "status": "", + "value": "Signature Select" + }, { "count": 4, - "display_name": "Drama", - "group_id": "18", - "parents": [] - }, - { - "children": [], + "data": {}, + "display_name": "Seneca Foods", + "status": "", + "value": "Seneca Foods" + }, { + "count": 19, + "data": {}, + "display_name": "General Mills", + "status": "", + "value": "General Mills" + }, { + "count": 5, + "data": {}, + "display_name": "Kelloggs", + "status": "", + "value": "Kelloggs" + }, { + "count": 1, + "data": {}, + "display_name": "Signature Cafe", + "status": "", + "value": "Signature Cafe" + }, { + "count": 1, + "data": {}, + "display_name": "Birds Eye", + "status": "", + "value": "Birds Eye" + }, { + "count": 1, + "data": {}, + "display_name": "Birds Eye Foods", + "status": "", + "value": "Birds Eye Foods" + }, { + "count": 7, + "data": {}, + "display_name": "Mission", + "status": "", + "value": "Mission" + }, { + "count": 4, + "data": {}, + "display_name": "Campbell Soup", + "status": "", + "value": "Campbell Soup" + }, { + "count": 8, + "data": {}, + "display_name": "Frito Lay", + "status": "", + "value": "Frito Lay" + }, { + "count": 1, + "data": {}, + "display_name": "Green Valley Foods", + "status": "", + "value": "Green Valley Foods" + }, { + "count": 1, + "data": {}, + "display_name": "Hormel Foods", + "status": "", + "value": "Hormel Foods" + }, { + "count": 5, + "data": {}, + "display_name": "Foster Farms", + "status": "", + "value": "Foster Farms" + }, { + "count": 8, + "data": {}, + "display_name": "Gerber", + "status": "", + "value": "Gerber" + }, { + "count": 10, + "data": {}, + "display_name": "ConAgra Foods", + "status": "", + "value": "ConAgra Foods" + }, { "count": 3, - "display_name": "Documentary", - "group_id": "99", - "parents": [] - }, - { - "children": [], + "data": {}, + "display_name": "Gruma", + "status": "", + "value": "Gruma" + }, { + "count": 6, + "data": {}, + "display_name": "Guerrero", + "status": "", + "value": "Guerrero" + }, { "count": 1, - "display_name": "Mystery", - "group_id": "9648", - "parents": [] - }, - { - "children": [], + "data": {}, + "display_name": "Jif", + "status": "", + "value": "Jif" + }, { "count": 1, - "display_name": "Fantasy", - "group_id": "14", - "parents": [] - }, - { + "data": {}, + "display_name": "Quaker Oats", + "status": "", + "value": "Quaker Oats" + }, { + "count": 2, + "data": {}, + "display_name": "Pirate Brands", + "status": "", + "value": "Pirate Brands" + }, { + "count": 1, + "data": {}, + "display_name": "Hormel", + "status": "", + "value": "Hormel" + }, { + "count": 1, + "data": {}, + "display_name": "Angies", + "status": "", + "value": "Angies" + }, { + "count": 6, + "data": {}, + "display_name": "Frito-Lay, INC", + "status": "", + "value": "Frito-Lay, INC" + }, { + "count": 1, + "data": {}, + "display_name": "Jose Ole", + "status": "", + "value": "Jose Ole" + }, { + "count": 4, + "data": {}, + "display_name": "ACH Food", + "status": "", + "value": "ACH Food" + }, { + "count": 3, + "data": {}, + "display_name": "B & G Foods", + "status": "", + "value": "B & G Foods" + }, { + "count": 1, + "data": {}, + "display_name": "Bar-S", + "status": "", + "value": "Bar-S" + }, { + "count": 1, + "data": {}, + "display_name": "Tupman Thurlow", + "status": "", + "value": "Tupman Thurlow" + }, { + "count": 1, + "data": {}, + "display_name": "Plum", + "status": "", + "value": "Plum" + }, { + "count": 3, + "data": {}, + "display_name": "Beechnut", + "status": "", + "value": "Beechnut" + }, { + "count": 1, + "data": {}, + "display_name": "Sampco", + "status": "", + "value": "Sampco" + }, { + "count": 1, + "data": {}, + "display_name": "Seeds Of Change", + "status": "", + "value": "Seeds Of Change" + }, { + "count": 1, + "data": {}, + "display_name": "World Finer Foods", + "status": "", + "value": "World Finer Foods" + }, { + "count": 3, + "data": {}, + "display_name": "Hillshire Brands", + "status": "", + "value": "Hillshire Brands" + }, { + "count": 1, + "data": {}, + "display_name": "Vigo Importing", + "status": "", + "value": "Vigo Importing" + }, { + "count": 1, + "data": {}, + "display_name": "PEPPERIDGE FARM", + "status": "", + "value": "PEPPERIDGE FARM" + }, { + "count": 2, + "data": {}, + "display_name": "Tostitos", + "status": "", + "value": "Tostitos" + }, { + "count": 3, + "data": {}, + "display_name": "La Tortilla Factory", + "status": "", + "value": "La Tortilla Factory" + }, { + "count": 2, + "data": {}, + "display_name": "Marie Callenders", + "status": "", + "value": "Marie Callenders" + }, { + "count": 2, + "data": {}, + "display_name": "Ortega", + "status": "", + "value": "Ortega" + }, { + "count": 1, + "data": {}, + "display_name": "American Pop Corn", + "status": "", + "value": "American Pop Corn" + }, { + "count": 4, + "data": {}, + "display_name": "Quaker", + "status": "", + "value": "Quaker" + }, { + "count": 1, + "data": {}, + "display_name": "JFC International", + "status": "", + "value": "JFC International" + }, { + "count": 1, + "data": {}, + "display_name": "Smartfood", + "status": "", + "value": "Smartfood" + }, { + "count": 3, + "data": {}, + "display_name": "Ferrara Candy", + "status": "", + "value": "Ferrara Candy" + }, { + "count": 3, + "data": {}, + "display_name": "PIC", + "status": "", + "value": "PIC" + }, { + "count": 1, + "data": {}, + "display_name": "Azteca Foods", + "status": "", + "value": "Azteca Foods" + }, { + "count": 1, + "data": {}, + "display_name": "Ole Mexican", + "status": "", + "value": "Ole Mexican" + }, { + "count": 1, + "data": {}, + "display_name": "Old El Paso", + "status": "", + "value": "Old El Paso" + }, { + "count": 2, + "data": {}, + "display_name": "Late July Snacks", + "status": "", + "value": "Late July Snacks" + }, { + "count": 1, + "data": {}, + "display_name": "Mondelez", + "status": "", + "value": "Mondelez" + }, { + "count": 1, + "data": {}, + "display_name": "Circle Foods", + "status": "", + "value": "Circle Foods" + }, { + "count": 2, + "data": {}, + "display_name": "Kraft Foods", + "status": "", + "value": "Kraft Foods" + }, { + "count": 1, + "data": {}, + "display_name": "Famous Products", + "status": "", + "value": "Famous Products" + }, { + "count": 1, + "data": {}, + "display_name": "Popcorn Indiana", + "status": "", + "value": "Popcorn Indiana" + }, { + "count": 2, + "data": {}, + "display_name": "RW Garcia", + "status": "", + "value": "RW Garcia" + }, { + "count": 1, + "data": {}, + "display_name": "Cornfields", + "status": "", + "value": "Cornfields" + }, { + "count": 2, + "data": {}, + "display_name": "American Popcorn", + "status": "", + "value": "American Popcorn" + }, { + "count": 1, + "data": {}, + "display_name": "Logan", + "status": "", + "value": "Logan" + }, { + "count": 1, + "data": {}, + "display_name": "Bobs", + "status": "", + "value": "Bobs" + }, { + "count": 2, + "data": {}, + "display_name": "Clabber Girl", + "status": "", + "value": "Clabber Girl" + }, { + "count": 1, + "data": {}, + "display_name": "Aunt Jemima", + "status": "", + "value": "Aunt Jemima" + }], + "type": "multiple" + }, { + "display_name": "Nutrition", + "name": "Nutrition", + "options": [{ + "count": 135, + "data": null, + "display_name": "Kosher", + "status": "", + "value": "Kosher" + }, { + "count": 20, + "data": {}, + "display_name": "Low Fat", + "status": "", + "value": "Low Fat" + }, { + "count": 23, + "data": {}, + "display_name": "Organic", + "status": "", + "value": "Organic" + }, { + "count": 70, + "data": {}, + "display_name": "Gluten Free", + "status": "", + "value": "Gluten Free" + }, { + "count": 6, + "data": {}, + "display_name": "Fat Free", + "status": "", + "value": "Fat Free" + }], + "type": "multiple" + }, { + "display_name": "Price", + "max": 9.09, + "min": 0.69, + "name": "Price", + "status": {}, + "type": "range" + }], + "features": [{ + "display_name": "Affinity Engine", + "enabled": true, + "feature_name": "auto_generated_refined_query_rules", + "variant": null + }, { + "display_name": "Searchandizing", + "enabled": true, + "feature_name": "manual_searchandizing", + "variant": null + }, { + "display_name": "Personalization", + "enabled": true, + "feature_name": "personalization", + "variant": null + }, { + "display_name": "Learn To Rank", + "enabled": true, + "feature_name": "query_items", + "variant": null + }], + "groups": [{ + "children": [{ + "children": [], + "count": 38, + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { "children": [], "count": 1, - "display_name": "Animation", - "group_id": "16", - "parents": [] - }, - { + "display_name": "Fruits & Vegetables", + "group_id": "Fruits%20%26%20Vegetables", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 17, + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 2, + "display_name": "Deli", + "group_id": "Deli", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 26, + "display_name": "Frozen Foods", + "group_id": "Frozen%20Foods", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 28, + "display_name": "International Cuisine", + "group_id": "International%20Cuisine", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 71, + "display_name": "Cookies, Snacks & Candy", + "group_id": "Cookies%2C%20Snacks%20%26%20Candy", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 13, + "display_name": "Baby Care", + "group_id": "Baby%20Care", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { + "children": [], + "count": 19, + "display_name": "Condiments, Spice & Bake", + "group_id": "Condiments%2C%20Spice%20%26%20Bake", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { "children": [], "count": 6, - "display_name": "Comedy", - "group_id": "35", - "parents": [] - }, - { + "display_name": "Meat & Seafood", + "group_id": "Meat%20%26%20Seafood", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }, { "children": [], - "count": 3, - "display_name": "Crime", - "group_id": "80", - "parents": [] + "count": 4, + "display_name": "Grains, Pasta & Sides", + "group_id": "Grains%2C%20Pasta%20%26%20Sides", + "parents": [{ + "display_name": "All", + "group_id": "all" + }] + }], + "count": 225, + "display_name": "All", + "group_id": "all", + "parents": [] + }], + "results": [{ + "data": { + "description": "Made with fresh cut golden sweet whole kernel corn. No preservatives. Non GMO (Corn used in this product is not genetically modified or bioengineered). Quality. USDA Process verified (USDA Process verified non-GE/GMO http://processverified.usda.gov). Visit Us at: www.delmonte.com. Questions or comments? Call 1-800-543-3090 (Mon-Fri). Please provide code information from the end of can when calling or writing. Please recycle. 1 g total fat (Amount in undrained [1/2 cup]). 320 mg sodium (210 mg sodium when drained). Grown in the USA. Product of USA.", + "facets": [{ + "name": "Brand", + "values": ["Del Monte"] + }, { + "name": "Price", + "values": [2.29] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150086", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150086.png", + "keywords": ["corn"], + "price": 2.29, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "children": [], - "count": 3, - "display_name": "Action", - "group_id": "28", - "parents": [] + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Del Monte Fresh Cut Corn Whole Kernel Golden Sweet with Natural Sea Salt - 15.25 Oz" + }, { + "data": { + "description": "Per 1/2 cup: 80 calories; 0 g sat fat (0% DV); 300 mg sodium (13% DV); 7 g total sugars. Quality guaranteed. Non BPA lining (can lining produced without the intentional additional of BPA). Our Signature is Our Promise: Signature Select is your assurance of great quality products at the best value everyday. We source freshly picked fruits and vegetables at the peak of each season. We wouldn't put our Signature on anything else. Quality and satisfaction guaranteed or your money back. Our Promise: Quality & satisfaction 100% guaranteed or your money back. www.betterlivingbrandsLLC.com. Smartlabel.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Low Fat"] + }, { + "name": "Price", + "values": [1.3] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150012", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150012.png", + "keywords": ["corn"], + "price": 1.3, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "children": [], - "count": 2, - "display_name": "Romance", - "group_id": "10749", - "parents": [] + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn Whole Kernel Golden Sweet Can - 15.25 Oz" + }, { + "data": { + "description": "Made with Fresh Cut Golden Sweet Whole Kernel Corn. Non GMO (Corn used in this product is not genetically modified or bioengineered). NO preservatives. Quality. USDA Process Verified: USDA Process Verified Non-GE/GMO http://processverified.usda.gov. Visit Us at: www.delmonte.com. Questions or comments? Call 1-800-543-3090 (Mon-Fri). Please provide code information from the end of can when calling or writing. Please recycle. Not a sodium-free food. Grown in the USA. Product of USA.", + "facets": [{ + "name": "Brand", + "values": ["Del Monte"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [2.29] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150013", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150013.png", + "keywords": ["corn"], + "price": 2.29, + "url": "/" }, - { - "children": [], - "count": 1, - "display_name": "Science Fiction", - "group_id": "878", - "parents": [] - } - ], - "results": [ - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn iv: the gathering", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/tRjeV9AZgCXGTqyvlp7Ui55Yb3l.jpg", - "url": "https://www.top250.tv/movies/25750" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn IV: The Gathering" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Del Monte Fresh Cut Corn Whole Kernel Golden Sweet No Salt Added - 15.25 Oz" + }, { + "data": { + "description": "No salt added. Quality guaranteed. Our Signature is our Promise: Signature Select is your assurance of great quality products at the best value everyday. We source freshly picked Scores and vegetables at the peak of each season. We wouldn't put our Signature on anything else Quality and satisfaction guaranteed or your money back. Our Promise: Quality & satisfaction 100% guaranteed or your money back. Non BPA lining (can lining produced without the intentional addition of BPA). Not a sodium free food. Per 1/2 Cup: 60 calories; 0 g sat fat (0% DV); 10 mg sodium (0% DV); 2 g total sugars. Not a sodium free food. www.betterlivingbrandsLLC.com. SmartLabel: can for more food information.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Low Fat"] + }, { + "name": "Price", + "values": [1.3] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150048", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150048.png", + "keywords": ["corn"], + "price": 1.3, + "url": "/", + "weighted_keywords": { + "add": 2, + "sweet": 2 + } + }, + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn Whole Kernel Golden Sweet Not Salt Added Can - 15.25 Oz" + }, { + "data": { + "description": "Quality guaranteed. Delicious Quality from Farm to Table: Welcome to the extraordinary flavors, textures, and colors of Signature Farms. You can find all the produce you want under the sun - crispy greens, perfectly ripened fruit, and all the colors of the vegetable rainbow. www.betterlivingbrandsLLC.com. SmartLabel. Scan for more food information. Product of Mexico.", + "facets": [{ + "name": "Brand", + "values": ["Signature Farms"] + }, { + "name": "Price", + "values": [5.9] + }], + "groups": [{ + "display_name": "Fruits & Vegetables", + "group_id": "Fruits%20%26%20Vegetables", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960111073", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960111073.png", + "keywords": ["vegetables", "packaged"], + "price": 5.9, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } + }, + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Farms Corn Super Sweet - 4 Count" + }, { + "data": { + "description": "Per 1/2 Cup: 60 calories; 0 g sat fat (0% DV); 130 mg sodium (6% DV); 2 g total sugars. USDA Organic. Organic from the Source: Doesn't it feel good to know where your food comes from? At O Organics, we carefully select ingredients which meet organic farming standards and share our commitment to organic agriculture. That's our promise. Quality & satisfaction 100% guaranteed or your money back. SmartLabel: Scan for more food information. Non BPA lining (Can lining produced without the intentional addition of BPA).", + "facets": [{ + "name": "Brand", + "values": ["O Organics"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Organic"] + }, { + "name": "Price", + "values": [2.09] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150017", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150017.png", + "keywords": ["corn"], + "price": 2.09, + "url": "/", + "weighted_keywords": { + "organic": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null, - "path_list": [] - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zH77CDSRPeYfZZJyyKSt84j62m8.jpg", - "url": "https://www.top250.tv/movies/10823" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "O Organics Organic Corn Whole Kernel - 15.25 Oz" + }, { + "data": { + "description": "Made with fresh cut golden sweet corn cream style. With natural sea salt. Quality. No preservatives. Non GMO (Ingredients of the types used in this product are not genetically modified). Non-BPA (Packaging produced without the intentional addition of BPA). Questions or comments? Call 1-800-543-3090 (Mon.-Fri.). Please provide code information from the end of can when calling or writing. Please recycle.", + "facets": [{ + "name": "Brand", + "values": ["Del Monte"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [2.29] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150085", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150085.png", + "keywords": ["corn"], + "price": 2.29, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn ii: the final sacrifice", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/lqFb8Mnx9tFPUevnfbz9o2adLFw.jpg", - "url": "https://www.top250.tv/movies/25748" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn II: The Final Sacrifice" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Del Monte Fresh Cut Corn Cream Style Golden Sweet - 14.75 Oz" + }, { + "data": { + "description": "Quality guaranteed. Our Promise: Quality & satisfaction 100% guaranteed or your money back. Non BPA lining (can lining produced without the intentional addition of BPA). Per 1/2 Cup: 70 calories; 0 g sat fat (0% DV); 300 mg sodium (13% DV); 8 g total sugars. Our Signature is Our Promise: Signature Select is your assurance of great quality products at the best value everyday. We wouldn't put our signature on anything else. Quality and satisfaction guaranteed or your money back. www.betterlivingbrandsLLC.com. SmartLabel: Scan for more food information.", + "facets": [{ + "name": "Brand", + "values": ["Signature Select"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Low Fat"] + }, { + "name": "Price", + "values": [1.3] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150010", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150010.png", + "keywords": ["corn"], + "price": 1.3, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn iii: urban harvest", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/Ajp5lVNAW0Kfi3uUlCCpIri28B8.jpg", - "url": "https://www.top250.tv/movies/25749" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn III: Urban Harvest" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Select Corn Golden Sweet Cream Style - 14.75 Oz" + }, { + "data": { + "description": "Quality guaranteed. Picked & packed at the peak of freshness. Per 1/2 Cup: 80 calories. At Signature Kitchens we're passionate about quality ingredients - like our corn. We source freshly picked fruits and vegetables at the peak of each season. www.betterlivingbrandsLLC.com. Our promise, quality & satisfaction 100% guaranteed or your money back. See end of can for country of orgin.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Low Fat"] + }, { + "name": "Price", + "values": [0.98] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121050023", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121050023.png", + "keywords": ["corn"], + "price": 0.98, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "the corn is green", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zBN62KUP4WGys96vmJUFRKc43B9.jpg", - "url": "https://www.top250.tv/movies/43492" - }, - "matched_terms": [ - "corn" - ], - "value": "The Corn Is Green" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn Whole Kernel Golden Sweet Can - 8.5 Oz" + }, { + "data": { + "description": "Made with farm fresh goodness! Visit our website at www.senecafoods.com. Please recycle.", + "facets": [{ + "name": "Brand", + "values": ["Seneca Foods"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [1.11] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960096944", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960096944.png", + "keywords": ["corn"], + "price": 1.11, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "king corn", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/pvqjdmu5IdzUPQgqwylpPrUSKSd.jpg", - "url": "https://www.top250.tv/movies/15281" - }, - "matched_terms": [ - "corn" - ], - "value": "King Corn" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Libbys Corn Whole Kernel Sweet - 15 Oz" + }, { + "data": { + "description": "Naturally flavored frosted corn puffs. Cuckoo for chocolatey milk! Per 3/4 Cup Serving: 100 calories; 0 g sat fat (0% DV); 100 mg sodium (4% DV); 9 g sugars. See nutrition facts for As Prepared information. 10 g whole grain per serving. At least 48 g recommended daily. Whole grain 1st ingredient in every General Mills Big G cereal. First ingredient whole grain. A whole grain food is made by using all three parts of grain. All General Mills big g cereals contain more whole grain than any other single ingredient. Produced with genetic engineering. Box Tops for Education. We serve the world by making food people love. We welcome your questions and comments generallmills.com. Exchange: 1-1/2 starch. Based on Academy of Nutrition and Diabetics and American Diabetes Association criteria. This package is sold by weight, not volume. You can be assured of proper weight even though some settling of contents normally occurs during shipment and handling. Learn more at ask.generalmills.com. how2rec", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [4.99] + }], + "groups": [{ + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960161250", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960161250.png", + "keywords": ["sweet", "cereal"], + "price": 4.99, + "url": "/", + "weighted_keywords": { + "size": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "corn island", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zM4ZZ7IpKQA266ynNWOvn3LfKE.jpg", - "url": "https://www.top250.tv/movies/282376" - }, - "matched_terms": [ - "corn" - ], - "value": "Corn Island" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Cocoa Puffs Frosted Corn Puffs Family Size - 20.9 Oz" + }, { + "data": { + "description": "Box Tops For Education. Endorsed by Weight Watchers. 2 PointsPlus value per serving. 100 calories per serving. Steam Crisp corn is vacuum packed and perfectly steam-cooked in the can. It contains the same amount of product as our standard can of corn, but uses less water and packaging, so it's friendlier on the environment too. Please recycle. Better if used by date on end of can. Weight Watchers PointsPlus Program! Check out the Weight Watchers PointsPlus Program. To learn more visit WeightWatchers.com or call 1(800)410-1199 today. A gluten free food. See how we lock in freshness at www.GreenGiant.com.", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Nutrition", + "values": ["Gluten Free", "Kosher"] + }, { + "name": "Price", + "values": [1.67] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150003", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150003.png", + "keywords": ["corn"], + "price": 1.67, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Mystery", - "group_id": "9648", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn 666: isaac's return", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/cAoLi0dxRZwA20LUzTTGN3Xn39Y.jpg", - "url": "https://www.top250.tv/movies/25752" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn 666: Isaac's Return" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Green Giant SteamCrisp Corn Whole Kernel White Shoepeg - 11 Oz" + }, { + "data": { + "description": "Picked at the peak of perfection. Endorsed by Weight Watchers. 1 PointsPlus value per serving. 60 calories per serving. Box Tops for Education. Our love for vegetables began over 100 years ago in Le Sueur, Minnesota. Today, we still have fourth generation farmers who pick each crop at the peak of perfection. That's how we make our vegetables unforgettable. That's Green Giant. Please recycle. Weight Watchers PointsPlus Program! Check out the Weight Watchers PointsPlus Program. To learn more visit WeightWatchers.com or call 1 (800) 410-1199 today. See how we lock in freshness at www.GreenGiant.com.", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [1.25] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "121150011", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-121150011.png", + "keywords": ["corn"], + "price": 1.25, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn v: fields of terror", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/w3ZOi0jbHNEQ26MEt1X3XCJzBYe.jpg", - "url": "https://www.top250.tv/movies/25751" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn V: Fields of Terror" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Green Giant Corn Whole Kernel Sweet - 15.25 Oz" + }, { + "data": { + "description": "Sweet crispy crunch! Per 1 Cup Serving: 120 calories; 0 g sat fat (0% DV); 105 mg sodium (4% DV); 9 g sugars. Kellogg's Family Rewards. Learn more at kfr.com. Collect points. Earn rewards. Two easy ways to collect points! Go to kfr.com to learn more. USA Olympic proud sponsor. Kellogg's Open for Breakfast. Let's talk. At Kellogg, we're working harder to earn a seat at your table. What can we do to make your mornings better? Questions or comments? Visit: kelloggs.com. Call: 1-800-962-1413. Provide production code on package. BCTGM: Bakery Confectionery Tobacco Workers & Grain Millers union made. AFL CIO CLC. Certified 100% recycled paperboard. kelloggs.com. how2recycle.info.", + "facets": [{ + "name": "Brand", + "values": ["Kelloggs"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [5.69] + }], + "groups": [{ + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960015388", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960015388.png", + "keywords": ["sweet", "cereal"], + "price": 5.69, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn: genesis", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/94Cc2YJMsCtezYRcmL1PyBNhE1y.jpg", - "url": "https://www.top250.tv/movies/70575" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn: Genesis" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Kelloggs Corn Pops Cereal Sweetened - 12.5 Oz" + }, { + "data": { + "description": "Quality guaranteed. Our Promise: Quality & satisfaction 100% guaranteed or your money back. Non BPA lining (can lining produced without the intentional addition of BPA). Per 1/3 Cup: 60 calories; 0 g sat fat (0% DV); 230 mg sodium (10% DV); 5 g total sugars. www.betterlivingbrandsLLC.com. SmartLabel: Scan for more food information.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [1.09] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960009115", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960009115.png", + "keywords": ["corn"], + "price": 1.09, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn: revelation", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/sL3ZaPFwgkfn9KuIsh861zsPX0Y.jpg", - "url": "https://www.top250.tv/movies/25753" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn: Revelation" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn Golden Sweet with Red & Green Peppers Can - 11 Oz" + }, { + "data": { + "description": "Rich & creamy. Chicken raised without antibiotics. Per 1 Cup: 220 calories; 6 g sat fat (30% DV); 710 mg sodium (30% DV); 6 g sugars. Inspected for wholesomeness by US Department of Agriculture. Smartlabel. Scan for more food information. Quality & satisfaction guaranteed or your money back.", + "facets": [{ + "name": "Brand", + "values": ["Signature Cafe"] + }, { + "name": "Price", + "values": [5.69] + }], + "groups": [{ + "display_name": "Deli", + "group_id": "Deli", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960071695", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960071695.png", + "keywords": ["deli", "soups"], + "price": 5.69, + "url": "/", + "weighted_keywords": { + "chicken": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Animation", - "group_id": "16", - "path": null, - "path_list": [] - } - ], - "id": "corn on the cop", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/1ifAyPrAJW4WDVqmvBmZo3hDhrD.jpg", - "url": "https://www.top250.tv/movies/234377" - }, - "matched_terms": [ - "corn" - ], - "value": "Corn on the Cop" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Cafe Soup Chicken & Sweet Corn Chowder - 24 Oz" + }, { + "data": { + "description": "Per 1 Cup Serving: 190 calories; 2 g sat fat (9% DV); 870 mg sodium (36% DV); 5 g sugars. Inspected for wholesomeness by US Department of Agriculture. All white meat chicken with no added antibiotics. Questions, comments? Save can and call 1-800-200-9377 weekdays 7:30 AM to 5:30 PM CT. Box Tops for Education. Gluten free. Visit our website at www.Progresso.com. how2recycle.info. For 100 years, our kitchens have crafted honest, soul-satisfying recipes with real ingredients you're proud to serve. Visit progresso.com for even more coziness. No artificial flavors. No MSG added (except that which occurs naturally in yeast extract hydrolyzed vegetable proteins, and tomato extract.). Exchanges: 1-1/2 starch, 1 lean meat, 1 fat. Based on Academy of Nutrition and Dietetics and American Diabetes Association criteria. Made in the USA.", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Nutrition", + "values": ["Gluten Free"] + }, { + "name": "Price", + "values": [3.39] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "125300232", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-125300232.png", + "keywords": ["ready", "to", "serve", "soup"], + "price": 3.39, + "url": "/", + "weighted_keywords": { + "rich": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - } - ], - "id": "con air", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/yhaOQ7xXw0PLHLvg1w0M9zlPdg6.jpg", - "url": "https://www.top250.tv/movies/1701" - }, - "matched_terms": [ - "con" - ], - "value": "Con Air" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Progresso Rich & Hearty Soup Chicken Corn Chowder Flavored with Bacon - 18.5 Oz" + }, { + "data": { + "description": "Selects. Fresh frozen vegetables. No preservatives. Perfectly cooks in the bag! Questions or comments? 800-563-1786 M-F 9:00am - 5:00pm EST. www.birdseye.com. Product of USA.", + "facets": [{ + "name": "Brand", + "values": ["Birds Eye"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [2.89] + }], + "groups": [{ + "display_name": "Frozen Foods", + "group_id": "Frozen%20Foods", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960143197", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960143197.png", + "keywords": ["frozen", "vegetables"], + "price": 2.89, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - } - ], - "id": "def-con 4", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/wmCLwtkwzrrphDhR1smtFLZrQxG.jpg", - "url": "https://www.top250.tv/movies/42033" - }, - "matched_terms": [ - "con" - ], - "value": "Def-Con 4" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Birds Eye Steamfresh Selects Super Sweet Corn Bag - 10 Oz" + }, { + "data": { + "description": "Per 1 Cup Serving: 100 calories; 0 g sat fat (0% DV); 200 mg sodium (8% DV); 3 g sugar. Kellogg's Family Rewards. Learn more at kfr.com. Collect points. Earn rewards. Two easy ways to collect points! Go to kfr.com to learn more. USA Olympic Proud Sponsor. The original & best. A Tradition of Simple Goodness: More than 100 years ago, Kellogg recognized the possibilities in a single grain. And with the simple goodness of our toasted corn flakes, breakfast cereal was born. We've been baking Kellogg's Corn Flakes with the same simple recipe ever since. Kellogg's Open for breakfast. OpenForBreakfast.com/Cornflakes. Made using a simple recipe for more than 100 years. The corn used to make Kellogg's Corn Flakes is US grown. Split kernels of corn are cooked & partially dried. Rolled thin into flakes, they're ready for toasting. From seed to spoon, you get our best in every bite. Learn more at OpenForBreakfast.com/Cornflakes. Cornelius. Fat free. Produced with genetic engineering. Questions or c", + "facets": [{ + "name": "Brand", + "values": ["Kelloggs"] + }, { + "name": "Nutrition", + "values": ["Fat Free", "Kosher"] + }, { + "name": "Price", + "values": [6.89] + }], + "groups": [{ + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "111010115", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-111010115.png", + "keywords": ["all", "family", "cereal"], + "price": 6.89, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Romance", - "group_id": "10749", - "path": null, - "path_list": [] - }, - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - }, - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "the con", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/fDcPgFzVioueAcp13nLw8TGiVOC.jpg", - "url": "https://www.top250.tv/movies/131729" - }, - "matched_terms": [ - "con" - ], - "value": "The Con" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Kelloggs Corn Flakes Cereal - 18 Oz" + }, { + "data": { + "description": "Natural fruit flavored sweetened corn puffs with other natural flavors. No high fructose corn syrup. No colors from artificial sources. No artificial flavors. Per 1 Cup Serving: 130 calories; 0 g sat fat (0% DV); 160 mg sodium (7% DV); 10 g sugars. See nutrition facts for as prepared information. First ingredient whole grain. A whole grain food is made by using all three parts of the grain. All general mills big g cereals contain more whole grain than any other single ingredient. Box Tops for Education. We are on a journey to make cereal better. We welcome your questions and comments. Generalmills.com. 1-800-328-114. Welcome to Satur-Yay-Aaah!! There's a bit of Saturday in every box of Trix, Cocoa Puffs, Golden Grahams, Cookie Crisp and REese's Puffs cereals. Pour a bowl of your favorite to make any weekday feel like Saturday! To add even more Satur-Yay-Aaah fun to your day. Try out one of these crazy hairstyles: Get up early and take golden opportunity to read your favorite comics. Ma", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Price", + "values": [2.5] + }], + "groups": [{ + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "111011133", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-111011133.png", + "keywords": ["sweet", "cereal"], + "price": 2.5, + "url": "/", + "weighted_keywords": { + "sweeten": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "comic-con episode iv: a fan's hope", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/axltQJKHxolLfbGwuTKZZlLbBsZ.jpg", - "url": "https://www.top250.tv/movies/91356" - }, - "matched_terms": [ - "con" - ], - "value": "Comic-Con Episode IV: A Fan's Hope" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Trix Cereal Sweetened Corn Puffs - 10.7 Oz" + }, { + "data": { + "description": "Naturally flavored. Made with real honey. Sweetened corn cereal with a touch of real honey and natural almond flavor. Gluten free. No high fructose corn syrup. No artificial flavors, colors or preservatives. Per 3/4 Cup Serving: 120 calories; 0 g sat fat (0% DV); 200 mg sodium (8% DV); 9 g sugars. See nutrition facts for as prepared information. Whole grain is the 1st ingredient. First ingredient whole grain. A whole grain food is made by using all three parts of the grain. All General Mills Big G cereals contain more whole grain than any other single ingredient. 10 g whole grain per serving. At least 48 g recommended daily. Produced with genetic engineering. Learn more at Ask.GeneralMills.com. Taste the possibilities in every square. Chex Vanilla; Chex Corn; Chex Rice; Chex Chocolate; Chex Blueberry; Chex Cinnamon; Chex Wheat. Make a splash with the great taste of honey in your bowl! Proud sponsor of Celiac Disease Foundation. Celiac.org. Exchange: 1-1/2 starch. Based on Academy of Nu", + "facets": [{ + "name": "Brand", + "values": ["General Mills"] + }, { + "name": "Nutrition", + "values": ["Gluten Free", "Kosher"] + }, { + "name": "Price", + "values": [2.5] + }], + "groups": [{ + "display_name": "Breakfast & Cereal", + "group_id": "Breakfast%20%26%20Cereal", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960111322", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960111322.png", + "keywords": ["all", "family", "cereal"], + "price": 2.5, + "url": "/", + "weighted_keywords": { + "nut": 2, + "sweetend": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "chronic-con, episode 420: a new dope", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/16pPnt4ce0i3zU7QOoHDD4JN9Oe.jpg", - "url": "https://www.top250.tv/movies/347528" - }, - "matched_terms": [ - "con" - ], - "value": "Chronic-Con, Episode 420: A New Dope" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Chex Cereal Corn Gluten Free Sweetend Honey Nut - 12.5 Oz" + }, { + "data": { + "description": "Premium quality. California & Washington. Visit our website at www.birdseye.com. At Birds Eye, we believe passionately in quality and that quality of life, family and friendships are the only reasons for our existence. We also believe that our mission is to bring our customers only the very best quality of product, of package, and of service. That is our heritage and that is our future. Our pledge is to offer our customers the very best grown and instantly quick frozen vegetables and fruit, and to continuously improve the choice of products that we offer you. Thank you for choosing Birds Eye products. You will always get our very best since quality is our business. Product of USA.", + "facets": [{ + "name": "Brand", + "values": ["Birds Eye Foods"] + }, { + "name": "Nutrition", + "values": ["Kosher"] + }, { + "name": "Price", + "values": [3.6] + }], + "groups": [{ + "display_name": "Frozen Foods", + "group_id": "Frozen%20Foods", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "147010091", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-147010091.png", + "keywords": ["frozen", "vegetables"], + "price": 3.6, + "url": "/" }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - } - ], - "id": "vaya con dios", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/pIV1xgavkLYL33agVmRxpwq9CE4.jpg", - "url": "https://www.top250.tv/movies/6318" - }, - "matched_terms": [ - "con" - ], - "value": "Vaya con Dios" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "C&W Petite Sweet Corn - 16 Oz" + }, { + "data": { + "description": "Quality guaranteed. A low fat food. Per 1 Ear: 90 calories; 0 g sat fat (0% DV); 0 mg sodium (0% DV); 5 g sugars. Package contains 12 mini ears. www.betterlivingbrandsLLC.com. Our Promise: Quality & satisfaction 100% guaranteed or your money back. Product of USA.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Kosher", "Low Fat"] + }, { + "name": "Price", + "values": [5.19] + }], + "groups": [{ + "display_name": "Frozen Foods", + "group_id": "Frozen%20Foods", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "147010663", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-147010663.png", + "keywords": ["frozen", "vegetables"], + "price": 5.19, + "url": "/", + "weighted_keywords": { + "corn": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - } - ], - "id": "the con artists", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/rn2xTdw2pyRTcjcwHy5yEfxkfyQ.jpg", - "url": "https://www.top250.tv/movies/300433" - }, - "matched_terms": [ - "con" - ], - "value": "The Con Artists" + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn On The Cob Mini - 12 Count" + }, { + "data": { + "description": "Quality guaranteed. Our Promise: Quality & satisfaction 100% guaranteed or your money back. Non BPA lining (can lining produced without the intentional addition of BPA). Per 1/2 Cup: 60 calories; 0 g sat fat (0% DV); 200 mg sodium (9% DV); 2 g total sugars. www.betterlivingbrandsLLC.com. SmartLabel: Scan for more food information.", + "facets": [{ + "name": "Brand", + "values": ["Signature Kitchens"] + }, { + "name": "Nutrition", + "values": ["Gluten Free", "Kosher"] + }, { + "name": "Price", + "values": [1.11] + }], + "groups": [{ + "display_name": "Canned Goods & Soups", + "group_id": "Canned%20Goods%20%26%20Soups", + "path": "/all", + "path_list": [{ + "display_name": "All", + "id": "all" + }] + }], + "id": "960197607", + "image_url": "https://d17bbgoo3npfov.cloudfront.net/images/farmstand-960197607.png", + "keywords": ["corn"], + "price": 1.11, + "url": "/", + "weighted_keywords": { + "sweet": 2 + } }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - } - ], - "id": "tempo instabile con probabili schiarite", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/iaOhlyHXqAIhsoGXqD9S4I066zo.jpg", - "url": "https://www.top250.tv/movies/333888" - }, - "matched_terms": [ - "con" - ], - "value": "Tempo instabile con probabili schiarite" - } - ], + "is_slotted": false, + "matched_terms": ["corn"], + "value": "Signature Kitchens Corn Whole Kernel Super Sweet - 15.25 Oz" + }], "sort_options": [], - "total_num_results": 23 + "total_num_results": 225 }, - "result_id": "5b19c365-1c85-4c2d-b627-0509d60ce2d5" -} + "result_id": "49eb05c2-a3a3-4080-b238-82c5a44f8cf5" +} \ No newline at end of file diff --git a/library/src/test/resources/search_response_empty.json b/library/src/test/resources/search_response_empty.json index 5f82e2cc..3d804c9d 100644 --- a/library/src/test/resources/search_response_empty.json +++ b/library/src/test/resources/search_response_empty.json @@ -1,17 +1,28 @@ { "request": { - "ef-11": "22", - "ef-ab": "cd", + "feature_variants": { + "auto_generated_refined_query_rules": null, + "manual_searchandizing": null, + "personalization": null, + "query_items": null + }, + "features": { + "auto_generated_refined_query_rules": true, + "manual_searchandizing": true, + "personalization": true, + "query_items": true + }, "fmt_options": { "groups_max_depth": 1, "groups_start": "current" }, - "num_results_per_page": 20, + "num_results_per_page": 24, "page": 1, + "searchandized_items": {}, "section": "Products", "sort_by": "relevance", "sort_order": "descending", - "term": "cornucopiasofcorndogs" + "term": "corn" }, "response": { "facets": [], @@ -20,5 +31,5 @@ "sort_options": [], "total_num_results": 0 }, - "result_id": "2ea93527-91d6-4dfa-86b0-6a0e8158bfd1" -} + "result_id": "49eb05c2-a3a3-4080-b238-82c5a44f8cf5" +} \ No newline at end of file diff --git a/library/src/test/resources/search_response_unexpected_data.json b/library/src/test/resources/search_response_unexpected_data.json deleted file mode 100755 index 7275c3f9..00000000 --- a/library/src/test/resources/search_response_unexpected_data.json +++ /dev/null @@ -1,599 +0,0 @@ -{ - "request": { - "ef-11": "22", - "ef-ab": "cd", - "fmt_options": { - "groups_max_depth": 1, - "groups_start": "current" - }, - "num_results_per_page": 20, - "page": 1, - "section": "Products", - "sort_by": "relevance", - "sort_order": "descending", - "term": "corn" - }, - "response": { - "facets": [], - "groups": [ - { - "children": [], - "count": 9, - "display_name": "Horror", - "group_id": "27", - "parents": [] - }, - { - "children": [], - "count": 7, - "display_name": "Thriller", - "group_id": "53", - "parents": [], - "unknown_name": "New name" - }, - { - "children": [], - "count": 4, - "display_name": "Drama", - "group_id": "18", - "parents": [] - }, - { - "children": [], - "count": 3, - "display_name": "Documentary", - "group_id": "99", - "parents": [] - }, - { - "children": [], - "count": 1, - "display_name": "Mystery", - "group_id": "9648", - "parents": [] - }, - { - "children": [], - "count": 1, - "display_name": "Fantasy", - "group_id": "14", - "parents": [] - }, - { - "children": [], - "count": 1, - "display_name": "Animation", - "group_id": "16", - "parents": [] - }, - { - "children": [], - "count": 6, - "display_name": "Comedy", - "group_id": "35", - "parents": [] - }, - { - "children": [], - "count": 3, - "display_name": "Crime", - "group_id": "80", - "parents": [] - }, - { - "children": [], - "count": 3, - "display_name": "Action", - "group_id": "28", - "parents": [] - }, - { - "children": [], - "count": 2, - "display_name": "Romance", - "group_id": "10749", - "parents": [] - }, - { - "children": [], - "count": 1, - "display_name": "Science Fiction", - "group_id": "878", - "parents": [] - } - ], - "results": [ - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn iv: the gathering", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/tRjeV9AZgCXGTqyvlp7Ui55Yb3l.jpg", - "url": "https://www.top250.tv/movies/25750" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn IV: The Gathering" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - }, - { - "display_name": "Fantasy", - "group_id": "14", - "path": null, - "path_list": [] - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zH77CDSRPeYfZZJyyKSt84j62m8.jpg", - "url": "https://www.top250.tv/movies/10823" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn ii: the final sacrifice", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/lqFb8Mnx9tFPUevnfbz9o2adLFw.jpg", - "url": "https://www.top250.tv/movies/25748" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn II: The Final Sacrifice" - }, - { - "data": { - "groups": [ - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn iii: urban harvest", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/Ajp5lVNAW0Kfi3uUlCCpIri28B8.jpg", - "url": "https://www.top250.tv/movies/25749" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn III: Urban Harvest" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "the corn is green", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zBN62KUP4WGys96vmJUFRKc43B9.jpg", - "url": "https://www.top250.tv/movies/43492" - }, - "matched_terms": [ - "corn" - ], - "value": "The Corn Is Green" - }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "king corn", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/pvqjdmu5IdzUPQgqwylpPrUSKSd.jpg", - "url": "https://www.top250.tv/movies/15281" - }, - "matched_terms": [ - "corn" - ], - "value": "King Corn" - }, - { - "data": { - "groups": [ - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "corn island", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/zM4ZZ7IpKQA266ynNWOvn3LfKE.jpg", - "url": "https://www.top250.tv/movies/282376" - }, - "matched_terms": [ - "corn" - ], - "value": "Corn Island" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Mystery", - "group_id": "9648", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn 666: isaac's return", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/cAoLi0dxRZwA20LUzTTGN3Xn39Y.jpg", - "url": "https://www.top250.tv/movies/25752" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn 666: Isaac's Return" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn v: fields of terror", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/w3ZOi0jbHNEQ26MEt1X3XCJzBYe.jpg", - "url": "https://www.top250.tv/movies/25751" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn V: Fields of Terror" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn: genesis", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/94Cc2YJMsCtezYRcmL1PyBNhE1y.jpg", - "url": "https://www.top250.tv/movies/70575" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn: Genesis" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - } - ], - "id": "children of the corn: revelation", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/sL3ZaPFwgkfn9KuIsh861zsPX0Y.jpg", - "url": "https://www.top250.tv/movies/25753" - }, - "matched_terms": [ - "corn" - ], - "value": "Children of the Corn: Revelation" - }, - { - "data": { - "groups": [ - { - "display_name": "Animation", - "group_id": "16", - "path": null, - "path_list": [] - } - ], - "id": "corn on the cop", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/1ifAyPrAJW4WDVqmvBmZo3hDhrD.jpg", - "url": "https://www.top250.tv/movies/234377" - }, - "matched_terms": [ - "corn" - ], - "value": "Corn on the Cop" - }, - { - "data": { - "groups": [ - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - } - ], - "id": "con air", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/yhaOQ7xXw0PLHLvg1w0M9zlPdg6.jpg", - "url": "https://www.top250.tv/movies/1701" - }, - "matched_terms": [ - "con" - ], - "value": "Con Air" - }, - { - "data": { - "groups": [ - { - "display_name": "Horror", - "group_id": "27", - "path": null, - "path_list": [] - }, - { - "display_name": "Science Fiction", - "group_id": "878", - "path": null, - "path_list": [] - }, - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - } - ], - "id": "def-con 4", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/wmCLwtkwzrrphDhR1smtFLZrQxG.jpg", - "url": "https://www.top250.tv/movies/42033" - }, - "matched_terms": [ - "con" - ], - "value": "Def-Con 4" - }, - { - "data": { - "groups": [ - { - "display_name": "Romance", - "group_id": "10749", - "path": null, - "path_list": [] - }, - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - }, - { - "display_name": "Drama", - "group_id": "18", - "path": null, - "path_list": [] - } - ], - "id": "the con", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/fDcPgFzVioueAcp13nLw8TGiVOC.jpg", - "url": "https://www.top250.tv/movies/131729" - }, - "matched_terms": [ - "con" - ], - "value": "The Con" - }, - { - "data": { - "groups": [ - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "comic-con episode iv: a fan's hope", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/axltQJKHxolLfbGwuTKZZlLbBsZ.jpg", - "url": "https://www.top250.tv/movies/91356" - }, - "matched_terms": [ - "con" - ], - "value": "Comic-Con Episode IV: A Fan's Hope" - }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - }, - { - "display_name": "Documentary", - "group_id": "99", - "path": null, - "path_list": [] - } - ], - "id": "chronic-con, episode 420: a new dope", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/16pPnt4ce0i3zU7QOoHDD4JN9Oe.jpg", - "url": "https://www.top250.tv/movies/347528" - }, - "matched_terms": [ - "con" - ], - "value": "Chronic-Con, Episode 420: A New Dope" - }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - } - ], - "id": "vaya con dios", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/pIV1xgavkLYL33agVmRxpwq9CE4.jpg", - "url": "https://www.top250.tv/movies/6318" - }, - "matched_terms": [ - "con" - ], - "value": "Vaya con Dios" - }, - { - "data": { - "groups": [ - { - "display_name": "Thriller", - "group_id": "53", - "path": null, - "path_list": [] - }, - { - "display_name": "Action", - "group_id": "28", - "path": null, - "path_list": [] - }, - { - "display_name": "Crime", - "group_id": "80", - "path": null, - "path_list": [] - } - ], - "id": "the con artists", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/rn2xTdw2pyRTcjcwHy5yEfxkfyQ.jpg", - "url": "https://www.top250.tv/movies/300433" - }, - "matched_terms": [ - "con" - ], - "value": "The Con Artists" - }, - { - "data": { - "groups": [ - { - "display_name": "Comedy", - "group_id": "35", - "path": null, - "path_list": [] - } - ], - "id": "tempo instabile con probabili schiarite", - "image_url": "https://image.tmdb.org/t/p/w185_and_h278_bestv2/iaOhlyHXqAIhsoGXqD9S4I066zo.jpg", - "url": "https://www.top250.tv/movies/333888" - }, - "matched_terms": [ - "con" - ], - "value": "Tempo instabile con probabili schiarite" - } - ], - "sort_options": [], - "total_num_results": 23 - }, - "result_id": "5b19c365-1c85-4c2d-b627-0509d60ce2d5" -}