我使用了gem searchkick和gem neo4j
class User
include Neo4j::ActiveNode
property :first_name
property :last_name
property :email
searchkick callbacks: :async
def search_data
{
first_name: first_name,
last_name: last_name,
email: email
}
end
end(User.search 'suresh',字段::first_name,:last_name).count => 22 (User.search‘保险’,字段::first_name,:last_name).count => 0
我想要所有的结果,即使我输入Su,请帮助我?
布莱恩建议
(User.search('su',字段::first_name,:last_name,拼写错误:{edit_distance: 2}).map(&:first_name) => "Sam", "Marilet", "aa", "asd", "Maricel".map(&:first_name) => "Herlinda","Brent","Andy","suresh“
发布于 2017-01-27 07:45:24
在研究了大脑的建议和更多的研究之后,我能够通过以下的变化来实现它
更新后的模型如下:
class User
include Neo4j::ActiveNode
property :first_name
property :last_name
property :email
searchkick word_start: [:first_name, :last_name]
def search_data
{
first_name: first_name,
last_name: last_name
}
end更新后的查询如下:
users = User.search('su', operator: "or",
fields: [:first_name, :last_name],
misspellings: {below: 5},
match: :word_start,
where: {id: mutual_stay_pal_ids},
page: params[:page], per_page: 10)更改后,不要忘记重新索引数据User.reindex。
发布于 2017-01-14 15:43:46
您应该能够使用edit_distance选项:
https://github.com/ankane/searchkick#misspellings
示例:
User.search('suresh', fields: [:first_name, :last_name], misspellings: {edit_distance: 2})https://stackoverflow.com/questions/41641649
复制相似问题