68 lines
1.5 KiB
Ruby
68 lines
1.5 KiB
Ruby
|
|
|
|
class Public::SearchController < ApplicationController
|
|
layout "public"
|
|
def search
|
|
@lang = LangSite.first
|
|
|
|
if params[:q].nil?
|
|
@articles = []
|
|
else
|
|
#@articles = Article.search params[:q]
|
|
params[:per_page] ||= 10
|
|
params[:from] = params[:page].to_i * params[:per_page]
|
|
|
|
@articles = Article.__elasticsearch__.search(
|
|
query: {
|
|
query_string: {
|
|
query: "*#{params[:q]}*",
|
|
fuzzy_prefix_length: 3,
|
|
}
|
|
},
|
|
|
|
|
|
#size: params[:per_page],
|
|
# from: params[:from]
|
|
)
|
|
|
|
@articles = Article.__elasticsearch__.search(
|
|
"query"=> {
|
|
"multi_match"=> {
|
|
"fields" => ["lang_articles.title^5", "lang_articles.description^3", "lang_articles.html"],
|
|
"query"=> "*#{params[:q]}*",
|
|
"fuzziness"=> "AUTO",
|
|
#"operator"=> "and"
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
)
|
|
|
|
@pages = Page.__elasticsearch__.search(
|
|
"query"=> {
|
|
"multi_match"=> {
|
|
"fields" => ["lang_pages.title^10", "lang_pages.description^3", "lang_pages.html"],
|
|
"query"=> "*#{params[:q]}*",
|
|
"fuzziness"=> "AUTO",
|
|
#"operator"=> "and"
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
#query: "*text search terms* AND type:\"blog\" AND status:\"published\""
|
|
end
|
|
end
|
|
|
|
|
|
end
|