Skip to content

Instantly share code, notes, and snippets.

publiccode-yaml-version: '0.1'
name: bla
releaseDate: '2018-09-05'
url: www.example.com
developmentStatus: development
softwareType: configurationFiles
tags:
- accessibility
maintenance:
contacts:
QUERY_FIELDS = {
title: { types: [:fuzzy] },
formatted_text: { types: [:word] },
author: { boost: 3.0, types: [:word] }, # we define both the type and the boost, only for this word.
abstract_text: { types: [:fuzzy] },
location: { types: [:infix] },
technique: { types: [:prefix] },
}.freeze
def matching_text_scope(text)
def word_weight(word)
case word
when "batter"
0.0
when /\Ab[ao]ttle\z/
0.0
else
1.0
end
end
Mastico::Query.new(fields: [:author], query: "Botticello").apply(chewy_query).load.to_a
=> [#<Artwork:0x007fa66e9a78f8
id: 30,
museum_id: 6,
title: "Adoration of the Magi"
author: "Sandro Botticelli (Florence 1445-1510)",
position: 2>,
#<Artwork:0x007fa66e9a7678
id: 3,
Mastico::Query.new(fields: [:title, :author], query: "Venus Botticelli").apply(chewy_query).load.to_a
=> [#<Artwork:0x007fa66a4281b0
id: 3,
museum_id: 15,
title: "Birth of Venus",
author: "Sandro Botticelli (Florence 1445-1510) ",
position: 109>]
chewy_query = UffiziIndex::Artwork.all
Mastico::Query.new(fields: [:title], query: "Venus").apply(chewy_query).load.to_a
=> [#<Artwork:0x007fa6668fc820
id: 3,
museum_id: 15,
title: "Birth of Venus",
author: "Sandro Botticelli (Florence 1445-1510) ",
position: 109>]
UffiziIndex::Artwork.all.query(multi_match: {fields: [:title, :author], query: "venus botticelli"}).load.to_a
=> [#<Artwork:0x007fa66eada0b8
id: 3,
museum_id: 15,
title: "Birth of Venus",
author: "Sandro Botticelli (Florence 1445-1510) ",
position: 109>,
#<Artwork:0x007fa66eada360
id: 30,
UffiziIndex::Artwork.all.query(word: {title: "venus"}).query(word: {author: "botticelli"}).load.to_a
=> [#<Artwork:0x007fa66ec00a28
id: 3,
museum_id: 15,
title: "Birth of Venus",
author: "Sandro Botticelli (Florence 1445-1510) ",
position: 109>]
UffiziIndex::Artwork.all.query(word: {title: "venus"}).load.to_a
=> [#<Artwork:0x007fa66ec00a28
id: 3,
museum_id: 15,
title: "Birth of Venus",
author: "Sandro Botticelli (Florence 1445-1510) ",
position: 109>]
class UffiziIndex < Chewy::Index
class << self
def index_name(_suggest = nil)
"#{Rails.env}_uffizi_#{I18n.locale}"
end
end
define_type(
Artwork.includes(:museum),
delete_if: -> { translation_for(I18n.locale).nil? }