Rails:3.2.11 Ruby:1.8.7 数据库:Postgres
我有一个定制的搜索引擎,它使用 ILIKE 在 100 万个条目中进行搜索,如下所示:
formatted_query_string = '%this%search%string'
like_variable = "ILIKE"
product_feed_query_line = [
"name " + like_variable, formatted_query_string, " OR",
"description " + like_variable, formatted_query_string, " OR",
"category = ", formatted_query_string
].join(" ")
@product_feed_products = FeededProduct.where(product_feed_query_line).where(:is_available => true).paginate(:page => params[:page], :per_page => 18)
该数据库具有以下索引schema.rb
:
add_index "feeded_products", ["name", "description", "category"], :name => "name"
这在数据库中处理大约需要 4.5 秒,这显然很多。但是根据数据集(1M),它是否长得不合理?
我知道完全更改为不同的搜索引擎对未来来说是个好主意,但在我花时间学习之前,我需要知道是否有什么我应该做的以加快速度,或者这种类型的请求就是这么慢。