我創建了一個使用2列(姓名和姓氏)的搜索應用程序,但在人名超過2個時不起作用。我如何搜索一個具有3個姓名和姓氏的人?多文本搜索問題
控制器:
class PersonController < ApplicationController
def search
@people = Person.find(:all,:conditions=>["(
name LIKE ? OR
lastname LIKE ? OR
(concat(name, \" \", lastname) LIKE ?)
)" ,
"%#{params[:query]}%",
"%#{params[:query]}%",
"%#{params[:query]}%" ]
)
end
end
查看
<% form_tag :controller=>"person",:action=>"search" do %>
Nombre o Apellido
<%= text_field_tag "query", params[:query]
<% end %>
例
|name| |Lastname|
Marcos Ignacio Raul Perez
我在我的日誌此看到: 工作,如果我搜索馬科斯·伊格納西奧·佩雷斯勞爾
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Ignacio Raul Perez%' OR
lastname LIKE '%Marcos Ignacio Raul Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Ignacio Raul Perez%')
))
工作,如果我搜索伊格納西奧·佩雷斯勞爾
SELECT * FROM `people`
WHERE ((
name LIKE '%Ignacio Raul Perez%' OR
lastname LIKE '%Ignacio Raul Perez%'
OR (concat(name, " ", lastname) LIKE 'Ignacio Raul Perez%')
))
工作,如果我搜索勞爾·佩雷斯
SELECT * FROM `people`
WHERE ((
name LIKE '%Raul Perez%' OR
lastname LIKE '%Raul Perez%'
OR (concat(name, " ", lastname) LIKE 'Perez%')
))
如果我搜索馬科斯·佩雷斯
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Perez%' OR
lastname LIKE '%Marcos Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Perez%')
))
不會不工作工作,如果我搜索伊格納西奧佩雷斯
SELECT * FROM `people`
WHERE ((
name LIKE '%Ignacio Perez%' OR
lastname LIKE '%Marcos Perez%'
OR (concat(name, " ", lastname) LIKE '%Ignacio Perez%')
))
如果我搜索馬科斯勞爾·佩雷斯
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Raul Perez%' OR
lastname LIKE '%Marcos Raul Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Raul Perez%')
))
我會很感激的幫助不工作。
Luri我已經安裝了這種寶石,但不知道如何將它集成在我的項目?你可以幫我嗎? –
http://railscasts.com/episodes/306-elasticsearch-part-1 ......... 但是不完整,我正在使用rails 2.3 –
你有另一種簡單的方法嗎?使用代碼? –