我无法使用NEST客户端在ElasticSearch中配置停用词。这是我的索引定义:
var createIndexResponse = _client.CreateIndex(IndexName, c => c
.Settings(s => s
.Analysis(a => a
.Analyzers(aa => aa.Stop("pfstop", st => st.StopWords("_english_"))
)
)
)
.Mappings(m => m
.Map<SearchTopic>(mm => mm
.Properties(p => p
.Text(t => t
.Name(n => n.Posts)
.Name(n => n.FirstPost)
.Name(n => n.Title)
.SearchAnalyzer("pfstop")
)
)
)
)
);
这是我的查询(是的,我只想返回ID):
var searchResponse = _client.Search<SearchTopic>(s => s
.Source(sf => sf.Includes(i => i.Fields(f => f.Id)))
.Query(q => q.MultiMatch(m => m.Query(searchTerm)
.Fields(f => f
.Field(x => x.Title, boost: 20)
.Field(x => x.FirstPost, boost: 2)
.Field(x => x.Posts))))
.Take(pageSize)
.Skip(startRow));
如果我的searchTerm
是“ Simon and Diana”,则可以从其中包含“ and”的任何行中获得结果,应通过停用词将其过滤掉。
答案 0 :(得分:0)
流利的语法再次出现。经过一些实验,从在映射中仅包含一个字段开始,我了解到您必须拆分这些字段及其分析器配对。正确的语法是这样的:
MsgBox(c.ExecuteNonQuery > 0, "Update Success! Acctid " & acctid.Text, "Update Failed!")