David Blocher
David Blocher

Reputation: 1

Elasticsearch and Searckick: Unable to get partial match on a joined field

I am trying to implement elasticsearch on Rails using Searchkick.

The goal is to search on 5 field of order, 2 of which are joined fields, and ideally partial matches using word_middle

For search_data

class Order < ApplicationRecord

searchkick word_middle: [:po_number, :tracking_number]  #Works
#searchkick word_middle: [:po_number, :tracking_number, :purchaser.name]  #does not work

...

def search_data
attributes.merge(
  order_content: self.order_content,
  ship_name: self.purchaser,
  vendor_name: self.vendor,
  po_number: self.po_number,
  tracking_number: self.tracking_number 
)
end

And in the actual search:

search_query = Order.search "#{search_query}", where: {archived: false},fields: [{po_number: :word_middle}, {tracking_number: :word_middle}]

#search_query = Order.search "#{search_query}", where: {archived: false},fields: [{po_number: :word_middle}, {tracking_number: :word_middle}, {ship_name: :word_middle}]  #Did not work

I can get the expected search results for PO_NUMBER and Tracking_Number, but when I try to include ship_name or purchaser.name I don't get any matches including ones that should match on PO and tracking numbers

Upvotes: 0

Views: 108

Answers (1)

Bernie Chiu
Bernie Chiu

Reputation: 263

# searchkick word_middle: [:po_number, :tracking_number, :purchaser.name]  # does not work

Shouldn't the :purchaser.name be :ship_name which matches the field you imported & searched in the ElasticSearch?

Upvotes: 0

Related Questions