2
我有一個Fr/En網站,我有一個「個人資料」模型,信息可以用英文或法文寫成(我不知道哪一個)。考慮Mongoid上的簡單模型Elasticsearch配置假設字段可以是法語或英語
class Profile
field :job_name
field :company_name
end
我想要在支持詞幹的作業名稱上進行智能搜索。所以基本上我想在那場
我相信我已經想通東西索引部,在這裏我分析這兩種語言領域的英國+法國分析:
mapping do
indexes :job_name, type: :string, fields: {
french: { type: :string, analyzer: 'french' },
english: { type: :string, analyzer: 'english' }
}
end
我在配置問題而產生的搜索。我其實不是。我的默認搜索引擎採用多比賽,每場提高了,我真的不知道如何spcify最重要的是分析儀:對「ACHAT」搜索時
query: {
filtered: {
query: {
multi_match: {
query: query,
fields: [
"company_name^3",
"job_name^2",
],
type: "best_fields",
tie_breaker: 0.3
}
}
}
}
理想的情況下,(法國購買) ,發動機應返回結果在作業名稱中包含
- 「gestionnaire D'ACHAT」(見 「d」「 前綴),
- 」ACHATS EN格羅斯「(見覆數)。
而且它也應該適用於類似英語單詞
編輯:我的ES指數(?是「沒有」正常)
{
"mydb": {
"aliases": {},
"mappings": {
"profile": {
"properties": {
"company_name": {
"type": "string"
}
"job_name": {
"type": "string",
"index": "no",
"fields": {
"english": {
"type": "string",
"analyzer": "english"
},
"french": {
"type": "string",
"analyzer": "french"
}
}
}
}
},
"settings": {
"index": {
"creation_date": "1469789941429",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "HHN-rWTTStCXDgQtJMTEPg",
"version": {
"created": "2030499"
}
}
},
"warmers": {}
}
}
感謝您的技巧。不幸的是,它似乎沒有工作。我嘗試創建一個工作名稱爲「買家的東西」的人,而'Profile.search('買家')'沒有返回任何結果......雖然它與'買家'做了 –
我的建議是測試這與純沒有你的Ruby客戶端的ES('curl'或Sense),因爲這是一個額外的變量。我剛剛與'買東西'的測試和查詢工作。例如,你確定Elasticsearch的索引映射是你認爲的嗎?在你的文章中,你爲它提供了Ruby代碼,但是在Elasticsearch級別上是映射嗎? –
例如,運行'curl -XGET「http:// localhost:9200/index_name/_mapping」'來獲取索引的映射。 –