Автозаполнение и как дать ему понять, строчные и прописные - PullRequest
1 голос
/ 26 января 2012

У меня есть база данных в Ruby исходного файла, который создает города в США, то есть:

City.create(:name => "Sausalito,CA", :state => "CA")

Однако, после тестирования автозаполнения, база данных распознает каждое предварительно загруженное место, только если я правильно отформатировал.

Таким образом, он будет видеть «Sausolito, CA» как вход, но не «sausolito, ca» как единое целое.

Это легко исправить на БД или это проблема с окном поиска?

Спасибо!

РЕДАКТИРОВАТЬ: Вот вызов:

    class CitiesController < ApplicationController
  def autocomplete

    render :json => City.autocomplete_name(params[:term]).collect{ |city| {:value => city.id, :label => "#{city.name}"} }


  end

end

AC:

class City < ActiveRecord::Base

  attr_accessible :name, :state
has_many :searches

scope :autocomplete_name, lambda {|name|

    where("cities.name LIKE ?", "#{name}%")
 }

end

Ответы [ 2 ]

1 голос
/ 26 января 2012

Если ваша база данных загружает запросы, используя запрос типа SELECT * FROM xyz WHERE name LIKE '$typed%', вы можете использовать SELECT * FROM xyz WHERE LOWER(name) LIKE LOWER("$typed%")

1 голос
/ 26 января 2012

Какую базу данных вы ищете?Для MySQL вы можете использовать предложение Order By для достижения нечувствительности к регистру - см. Ниже ....

Также мне показалось странным, что STRCMP () чувствителен к регистру, но ORDER BY - регистрнечувствительны.

Вы можете найти больше информации здесь.Даже я удивлялся, что в некоторых ситуациях выборки MySQL нечувствительны к регистру, но я действительно не тратил время на выяснение причин несоответствия, сегодня я узнал об этом!

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

Наилучшим подходом будет загрузка всех этих записей в память и хранение строчных версий этих строк.Ваша производительность будет намного лучше, чем попадание в базу данных для возможности автозаполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...