簡體   English   中英

使用輪胎從Elasticsearch中的查詢中提高

[英]Boost from query in elasticsearch using tire

我有一組具有背景(例如“計算機科學”)和技能(例如“ php”)的用戶。 我試圖通過強調背景或技能來搜索它們(用戶在搜索時選擇任一選項)。

我已經設法使用帶有此JSON字符串的curl來進行此工作(在這種情況下,我強調了背景):

'"query" : { 
    "bool" : {
        "should" : [
            {
                "text" : {"skills" : {"query" : "php mysql html css"}}
            },
            {
                "text" : {"backgrounds" : {"query" : "computer science", "boost" : 5}}
            }
        ]
    } 
}'

現在我的問題是,我無法弄清楚如何將這個JSON用作Tire中的查詢,或如何在Tire DSL中編寫等效內容。

編輯

實際上,我通過查看Tire源代碼了解了這一點。

看起來像這樣:

results = Users.search(:load => true) do
  query do
    boolean do
      should { string "skills:#{skills_query}", {:boost => skills_boost}}
      should {string "backgrounds:#{backgrounds_query}", {:boost => backgrounds_boost}}
    end
  end
end

我將要強調的一個設置為5,將另一個設置為0。

似乎嚴重缺乏有關如何在輪胎中正確執行此操作的文檔。 經過數小時的搜索,我發現了這篇文章。 稍后,我將在此發表博客,以希望人們不必像我一樣永遠挖掘。 無論如何,以下是我根據您的建議所做的事情,並且通過將名稱字段提升到其他屬性匹配項之上,它像一種魅力一樣工作。

page = params[:page].present? ? params[:page] : 1
tire.search(page: page, per_page: ApplicationHelper::MAX_SEARCH_LENGTH) do
  query do
    boolean do
      should { string "name:#{params[:q]}*", {:boost => 100}}
      should { string "#{params[:q]}*"}
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM