gpt4 book ai didi

ruby-on-rails - Searchkick-具有多个模型和字段的自动完成

转载 作者:行者123 更新时间:2023-12-03 02:22:26 28 4
gpt4 key购买 nike

Searchkick-具有多个模型和字段的自动完成

我正在努力为与Post模型关联的多个模型实现autocomplete functionality。搜索功能可以正常工作,并返回预期的数据。如果我以documentation的方式实现它,那么我的自动完成方法也可以正常工作(但是仅适用于帖子标题)。

我还通过将Post.index.name切换为Post.searchkick_index.name来尝试了this answer和此one,但自动完成功能未显示。

这是我在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

我希望能够自动完成Post的 标题,Tag的 标题和用户的 完整名称。我应该如何更改我的代码?

先感谢您!

最佳答案

从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])

关于ruby-on-rails - Searchkick-具有多个模型和字段的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028786/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com