Browse Source

Reduce min match for address search

pull/2924/head
Manny Dinssa 2 months ago
parent
commit
29bfbea525
  1. 4
      app/controllers/address_search_controller.rb
  2. 7
      app/services/address_client.rb

4
app/controllers/address_search_controller.rb

@ -18,7 +18,7 @@ class AddressSearchController < ApplicationController
end
elsif query.match?(/[a-zA-Z]/)
# Query contains letters, assume it's an address
service = AddressClient.new(query)
service = AddressClient.new(query, { minmatch: 0.2 })
service.call
if service.error.present?
@ -32,7 +32,7 @@ class AddressSearchController < ApplicationController
end
else
# Query is ambiguous, use both APIs and merge results
address_service = AddressClient.new(query)
address_service = AddressClient.new(query, { minmatch: 0.2 })
uprn_service = UprnClient.new(query)
address_service.call

7
app/services/address_client.rb

@ -7,8 +7,9 @@ class AddressClient
ADDRESS = "api.os.uk".freeze
PATH = "/search/places/v1/find".freeze
def initialize(address)
def initialize(address, options = {})
@address = address
@options = options
end
def call
@ -43,8 +44,8 @@ private
params = {
query: address,
key: ENV["OS_DATA_KEY"],
maxresults: 10,
minmatch: 0.4,
maxresults: @options[:maxresults] || 10,
minmatch: @options[:minmatch] || 0.4,
}
uri.query = URI.encode_www_form(params)
uri.to_s

Loading…
Cancel
Save