Elasticsearch 为可以是法语或英语的字段配置词干提取
Elasticsearch configure stemming for fields that can be french or english
我有一个 Fr/En 网站,我有一个 "profile" 模型,其中的信息可以用英语或法语(我不知道是哪个)编写。考虑 Mongoid
上的一个简单模型
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
我在配置搜索词干时遇到问题。我其实不是。我的默认搜索引擎使用多重匹配和每个字段提升,我真的不明白如何在此之上指定分析器:
query: {
filtered: {
query: {
multi_match: {
query: query,
fields: [
"company_name^3",
"job_name^2",
],
type: "best_fields",
tie_breaker: 0.3
}
}
}
}
理想情况下,当搜索 "achat"(法语购买)时,引擎应该 return 结果,其中工作名称包含
- "gestionnaire d'achat"(见"d'"前缀),
- "achats en gros"(见复数形式)。
它应该也适用于类似的英文单词
编辑:我的 ES 索引("no" 正常吗?)
{
"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": {}
}
}
您可以对字段名称使用通配符版本,multi_match
将为此使用每个子字段的分析器:
"fields": [
"job_name.*^2"
],
我有一个 Fr/En 网站,我有一个 "profile" 模型,其中的信息可以用英语或法语(我不知道是哪个)编写。考虑 Mongoid
上的一个简单模型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
我在配置搜索词干时遇到问题。我其实不是。我的默认搜索引擎使用多重匹配和每个字段提升,我真的不明白如何在此之上指定分析器:
query: {
filtered: {
query: {
multi_match: {
query: query,
fields: [
"company_name^3",
"job_name^2",
],
type: "best_fields",
tie_breaker: 0.3
}
}
}
}
理想情况下,当搜索 "achat"(法语购买)时,引擎应该 return 结果,其中工作名称包含
- "gestionnaire d'achat"(见"d'"前缀),
- "achats en gros"(见复数形式)。
它应该也适用于类似的英文单词
编辑:我的 ES 索引("no" 正常吗?)
{
"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": {}
}
}
您可以对字段名称使用通配符版本,multi_match
将为此使用每个子字段的分析器:
"fields": [
"job_name.*^2"
],