Module: Algolia::Search::OptionalWords
- Defined in:
- lib/algolia/models/search/optional_words.rb
Overview
Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn’t include the optional words. For example, if the search query is "action video" and "video" is an optional word, the search engine runs two queries. One for "action video" and one for "action". Records that match all words are ranked higher. For a search query with 4 or more words and all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If ‘optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
Class Method Summary collapse
-
.build(data) ⇒ Object
Builds the object.
-
.openapi_one_of ⇒ Object
List of class defined in oneOf (OpenAPI v3).
Class Method Details
.build(data) ⇒ Object
Builds the object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/algolia/models/search/optional_words.rb', line 24 def build(data) # Go through the list of oneOf items and attempt to identify the appropriate one. # Note: # - We do not attempt to check whether exactly one item matches. # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) # due to the way the deserialization is made in the base_object template (it just casts without verifying). # - TODO: scalar values are de facto behaving as if they were nullable. # - TODO: logging when debugging is set. openapi_one_of.each do |klass| begin # "nullable: true" next if klass == :AnyType typed_data = find_and_cast_into_type(klass, data) return typed_data if typed_data # rescue all errors so we keep iterating even if the current item lookup raises rescue end end openapi_one_of.include?(:AnyType) ? data : nil end |
.openapi_one_of ⇒ Object
List of class defined in oneOf (OpenAPI v3)
14 15 16 17 18 19 |
# File 'lib/algolia/models/search/optional_words.rb', line 14 def openapi_one_of [ :"Array<String>", :"String" ] end |