[英]Searchkick - Autocomplete with multiple models & fields
Searchkick - 具有多个模型和字段的自动完成
我正在努力为与我的Post
model 关联的多个模型实现自动完成功能。 搜索功能工作正常并返回预期数据。 如果我按照文档中的方式实现它,我的自动完成方法也可以正常工作(但仅适用于帖子的标题)。
我还通过将Post.index.name切换为Post.index.name
尝试了这个答案和这个Post.searchkick_index.name
,但自动完成功能不显示。
这是我在posts_controller.rb
中编写的代码:
def autocomplete
render json: Post.search(params[:query],
index_name: [
Post.searchkick_index.name,
Tag.searchkick_index.name,
User.searchkick_index.name
],
limit: 10,
load: false,
misspellings: { below: 5 })
end
我也试过:
def autocomplete
render json: Searchkick.search(params[:query],
models: [Post, Tag, User],
limit: 10,
load: false,
misspellings: { below: 5 })
end
上面的代码没有错误,但自动完成功能也不起作用。
在post.rb
中:
class Post < ApplicationRecord
belongs_to :user
has_many :comments, dependent: :destroy
has_many :posts_tags, dependent: :destroy
has_many :tags, through: :posts_tags
searchkick word_start: %i[title]
def search_data
{
title: title,
description: description,
user: user.full_name
}.merge(
tag: tags.map(&:title),
comments: comments.map(&:description)
)
end
end
正如答案部分所建议的,我还尝试了以下方法:
def autocomplete
posts = Post.search(params[:query], execute: false)
tags = Tag.search(params[:query], execute: false)
users = User.search(params[:query], execute: false)
render json: Searchkick.multi_search([posts, tags, users])
end
这将返回以下错误: fatal - exception reentered
。
我希望能够自动完成帖子的标题、标签的标题和用户的全名。 我应该如何更改我的代码?
先感谢您!
从searchkick的 multi_search :
posts = Post.search(params[:query], execute: false)
tags = Tag.search(params[:query], execute: false)
users = User.search(params[:query], execute: false)
Searchkick.multi_search([posts, tags, users])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.