Skip to content

Instantly share code, notes, and snippets.

QUERY_FIELDS = {
title: { types: [:fuzzy] },
formatted_text: { types: [:word] },
author: { boost: 3.0, types: [:word] }, # qua definiamo sia il tipo che il boost, solo per questa parola.
abstract_text: { types: [:fuzzy] },
location: { types: [:infix] },
technique: { types: [:prefix] },
}.freeze
def matching_text_scope(text)
def word_weight(word)
case word
when "botteghe"
0.0
when /\Ab[ao]tte\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: "Adorazione dei Magi"
author: "Sandro Botticelli (Firenze 1445-1510)",
position: 2>,
#<Artwork:0x007fa66e9a7678
id: 3,
Mastico::Query.new(fields: [:title, :author], query: "Venere Botticelli").apply(chewy_query).load.to_a
=> [#<Artwork:0x007fa66a4281b0
id: 3,
museum_id: 15,
title: "Nascita di Venere",
author: "Sandro Botticelli (Firenze 1445-1510) ",
position: 109>]
chewy_query = UffiziIndex::Artwork.all
Mastico::Query.new(fields: [:title], query: "Venere").apply(chewy_query).load.to_a
=> [#<Artwork:0x007fa6668fc820
id: 3,
museum_id: 15,
title: "Nascita di Venere",
author: "Sandro Botticelli (Firenze 1445-1510) ",
position: 109>]
UffiziIndex::Artwork.all.query(multi_match: {fields: [:title, :author], query: "venere botticelli"}).load.to_a
=> [#<Artwork:0x007fa66eada0b8
id: 3,
museum_id: 15,
title: "Nascita di Venere",
author: "Sandro Botticelli (Firenze 1445-1510) ",
position: 109>,
#<Artwork:0x007fa66eada360
id: 30,
UffiziIndex::Artwork.all.query(word: {title: "venere"}).query(word: {author: "botticelli"}).load.to_a
=> [#<Artwork:0x007fa66ec00a28
id: 3,
museum_id: 15,
title: "Nascita di Venere",
author: "Sandro Botticelli (Firenze 1445-1510) ",
position: 109>]
UffiziIndex::Artwork.all.query(word: {title: "venere"}).load.to_a
=> [#<Artwork:0x007fa66ec00a28
id: 3,
museum_id: 15,
title: "Nascita di Venere",
author: "Sandro Botticelli (Firenze 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? }
@matteomanzo
matteomanzo / query.json
Last active March 26, 2018 13:13
Process of a basic Mastico query
{
"body": {
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"bool": {