0
我做了一堆搜索,我一直無法得到這個問題的答案 - 希望這不是一個重複(道歉,如果它是)...ruby on rails:ElasticSearch /輪胎動態搜索多個指標
前言:我正在使用Rails & Tire來執行ElasticSearch。
我有一個對象,地點,屬性「名稱」,「城市」,「國家」和「郵編」。他們被編入索引如下:
indexes :name, :type => 'multi_field', :fields => {
:name => { :type => 'string', :analyzer => 'snowball' },
:"name.exact" => { :type => 'string', :index => :not_analyzed }
}
indexes :city
indexes :state
indexes :zip
有三個條件查詢:只有1名,2(市,州,郵政編碼),3名AND(市,州,郵政編碼)。
我對「查詢」模塊的代碼是:預期對多個測試
if (City, State).present?
boolean do
must { string "name:#{name}*" } if name.present?
must { string "city:#{city_state}*" }
must { string "state:#{city_state}*" }
end
elsif (Zip).present?
boolean do
must { string "name:#{name}*" } if name.present?
must { string "zip:#{query_parameters["zip"]}*" }
end
else
string "name:#{name}*" }
end
上述搜索條件#1和#2的工作。然而,條件3沒有 - 它似乎只關注「名稱」字段。我假設它與使用「city_state」變量在「城市」和「州」上搜索有關......但我這樣做是因爲用戶可以輸入「芝加哥」或「伊利諾伊州」 City,State/Zip文本框和搜索應該仍然可以使用,分別使用芝加哥的地理中心或伊利諾伊州的地理中心。
任何明顯的我做錯了?
澄清:這三個條件是:有三個條件查詢:只有1名,2(市,州,郵政編碼),3名和(城市,州或郵編)。所以,Name &&(City,State || Zip)不起作用。 – CDub 2013-05-20 23:16:06