我正在为一个网站构建一个搜索引擎,用户可以来自许多不同的国家并发布文本内容。
我会考虑: - 法语生成法语和英语内容 - 德语生成德语和英语等内容...
我想知道是否可以同时使用不同的雪球词干分析器语言进行搜索,以便我们同时获得适当的结果。
我们是否必须为每个雪球词干分析器语言创建一个索引?
这种情况有已知的模式吗?
谢谢
我正在为一个网站构建一个搜索引擎,用户可以来自许多不同的国家并发布文本内容。
我会考虑: - 法语生成法语和英语内容 - 德语生成德语和英语等内容...
我想知道是否可以同时使用不同的雪球词干分析器语言进行搜索,以便我们同时获得适当的结果。
我们是否必须为每个雪球词干分析器语言创建一个索引?
这种情况有已知的模式吗?
谢谢
这么快的免责声明,我不是词干/语言形态方面的专家,但由于没有其他人回应,这是我的理解。此外,我的大部分经验都与 solr 类似。
为了能够使用单个混合结果集对多种语言进行词干查询,您需要使用多语言词干分析器。我不确定什么可用于 elastisearch。
尝试将针对单一语言设计的多个词干分析器应用到单个索引会互相影响,并且可能不会产生预期的结果(词干规则因语言而异)。
每种语言都有一个带有各自词干分析器的索引适用于具有单一语言结果的查询。尝试将来自多个查询的结果与多个索引结合起来通常是相当有问题的(您必须尝试规范相关性并处理分页)。
您可以创建 2 个单独的索引并同时搜索两个(或全部)。只要索引字段相同,您就会得到有效的结果。
今年早些时候,来自 elasticsearch 团队的Kiju Kim在 elastic.co 博客上发表了一些关于如何使用多种语言的好文章:
您基本上可以为您的内容使用多个字段- 一个用于您想要支持的每种语言(第 2 部分) - 每个字段都使用特定于语言的分析器(第 1 部分)。(第 3 部分)添加了一些优化以使用语言检测来填充正确的语言字段,而不是使用摄取管道(使用摄取插件进行语言检测)的所有字段。
这个新的 ElasticSearch 插件工作正常:
您可以组合词干分析器。我认为会有冲突,秩序很重要。想知道这是多大的问题。
"settings": {
"index": {
"analysis": {
"filter": {
"german_stemmer": {
"type": "stemmer",
"name": "light_german"
},
"english_stemmer": {
"type": "stemmer",
"name": "english"
},
"french_stemmer": {
"type": "stemmer",
"name": "light_french"
},
"italian_stemmer": {
"type": "stemmer",
"name": "light_italian"
}
}
"analyzer": {
"asdfghjkl": {
"tokenizer": "standard",
"filter": [
"english_stemmer",
"italian_stemmer",
"french_stemmer",
"german_stemmer"
]
}
}
}
}
}