2
特定字段我有一個具有以下字段的資源對象:標題,描述,和體。設置Elasticsearch分析器使用輪胎寶石
使用輪胎寶石,我想用一個標準的分析儀標題和描述,但對於體領域我想用雪球分析儀。
所以在我 resource.rb文件我有以下代碼:
mapping do
indexes :title, type: 'string', :index => :not_analyzed, :store => true
indexes :description, type: 'string'
indexes :body, type: 'string', :analyzer => 'snowball'
end
def self.search(params)
search_query = params[:query]
tire.search(page: params[:page], per_page: 15) do |s|
s.query { string params[:query], default_operator: "AND"} if params[:query].present?
# do i need another line here specifically for description?
#s.query { string "body:#{params[:query]}", analyzer: 'snowball'} if params[:query].present?
end
end
我設定的分析儀中的映射越滾越大。我確認這個工程,因爲如果我運行下面的命令:
curl -XGET localhost:9200/example/_search?q=body:cook
它將返回烹調,烹調等
不過,我希望能夠通過下面的查詢
curl -XGET localhost:9200/example/_search?q=cooking
而我想elasticsearch搜索這個詞標題和描述字段和搜索字廚師在身上。
這可能嗎?而且因爲我對整個搜索遊戲不熟悉,這是個好主意嗎?還是我只是在火坑上玩弄罐裝汽油的人?
謝謝imotov,我看到那篇文章。如果我使用該帖子作爲參考,我假設如果我將雪球設置爲默認分析器,它也將應用於標題和說明字段。我想我想要的是你提到的第二個選項,即控制哪些字段包含在_all字段中,但是如果我使用這個選項,我還可以定義通過雪球分析器包含其他字段嗎?您是否還有任何在線樣本,您知道在同一個查詢中使用了兩臺分析儀?再次感謝。 – schmudu
我看到,如果你想在不同的領域使用不同的分析儀,_all字段不適合你。 _all字段基本上是幾個字段的副本,它只能使用一個分析器。如果你想要不同的分析器,你應該爲每個字段使用單獨的查詢,然後使用[Bool Query](http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.html)或[Dis Max Query](http://www.elasticsearch.org/guide/reference/query-dsl/dis-max-query.html)。 – imotov
真棒..感謝提示imotov!我會試試看。 – schmudu