栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在NEST中使用多个索引分析器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在NEST中使用多个索引分析器?

首先,要回答您的问题,您不能将多个分析仪添加到一个字段中。但是,您可以使用多字段类型来映射同一字段的多个版本,并对每个版本应用不同的分析器。

关于带标点和不带标点的搜索,如果您使用与索引和搜索分析器相同的分析器,则没有关系,因为在索引编制过程中应用于字段的相同分析也将应用于用户查询。

例:

Foo.Bar
将被索引为
foobar

如果用户搜索

Foo.Bar
FooBar
,则搜索分析器会将其转换为
foobar
,因为字段也被索引为,所以将找到匹配项
foobar

我觉得你的问题的一部分是,你要使用

full_match
的搜索分析,并
partial_match_no_punctuation
partial_match
作为指数分析。尝试将它们调和为一个(删除标点符号,ngram),并将其用于搜索和索引分析器。如果发现仍然需要多个分析器,请查看我上面提到的多字段类型。

希望能有所帮助。

编辑:根据您的更新,多字段映射的问题是您试图为两个字段分配相同的名称。此外,您正在命名字段“项目”,这是您的类型的名称,可能您想将其命名为“摘要”。另外,您也不想将“
Id”字段包含在“ Summary”多字段中。尝试以下方法:

.AddMapping<ElasticSearchProject>(m => m.MapFromAttributes().Properties(project => project    .MultiField(mf => mf        .Name(o => o.Summary)        .Fields(f => f .String(s => s.Name(o => o.Summary).Analyzer("partial_match")) .String(s => s.Name(o => o.Summary.Suffix("no_punctuation")).Analyzer("partial_match_no_punctuation"))        )))));

这将在映射中创建两个字段:

summary
partial_match
分析仪。

summary.no_puncuation
partial_match_no_punctuation
分析仪。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号