gpt4 book ai didi

ruby-on-rails - 如何在Rails中使用 Elasticsearch 为结果实现部分单词匹配

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

我是 flex 搜索的新手,想在我的应用程序中实现部分单词匹配,不知道如何实现,请向我建议我的代码如下:

article.rb文件

    class Article < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks


settings analysis: {
filter: {
ngram_filter: { type: "nGram", min_gram: 2, max_gram: 12 }
},
analyzer: {
partial_analyzer: {
type: "snowball",
tokenizer: "standard",
filter: ["standard", "lowercase", "ngram_filter"]
}
}
} do
mapping do
indexes :title, index_filter: "ngram_filter"
indexes :body, index_analyzer: "partial_analyzer"
indexes :id
end
end
def self.search(params)
tire.search() do
query { string params[:query]} if params[:query].present?
end
end
end

article_controller.rb

class ArticlesController < ApplicationController
def index
if params[:query].present?
@articles = Article.search(params)
# @articles = Article.where(title: params["query"])
else
@articles = Article.all
end

respond_to do |format|
format.js { render :layout => false }
format.html

end

end
end

我也不太了解映射r索引,因此请提前向我建议解决方案,thanx。

最佳答案

您可以通过在搜索框中输入星号(*)来执行部分搜索,例如:

*search_term



默认情况下,您希望在搜索方法中添加它,就像
def self.search(params)
tire.search() do
query { string "*#{params[:query]}*" } if params[:query].present?
end
end

关于ruby-on-rails - 如何在Rails中使用 Elasticsearch 为结果实现部分单词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702942/

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