我有一个要求,我需要索引一些以 (std) 为前缀的文本,然后我应该能够再次搜索。
IE。一个文档(html)包含以下句子
(std)Almindelige betingelser for misligholdelseserstatning
我应该能够查询
(std)Almindelige betingelser
现在,我在文档中阅读了很多内容,现在有一个 charfilter 将 ( 和 ) 替换为 _,我认为我也可以安全地在搜索查询中进行替换,所以它变成
_std_Almindelige betingelser
但由于某种原因,它根本无法正常工作。搜索时根本没有返回任何结果,_std_Almindelige betingelser
即使我可以通过浏览文档看到该术语并返回一个方面列表。
这是我的索引设置和类型映射
var settings = new IndexSettings();
settings.Analysis.CharFilters.Add("parenthesis", new MappingCharFilter
{
Mappings = new[] { "( => _", ") => _" }
});
settings.Analysis.TokenFilters.Add("snowball", new SnowballTokenFilter
{
Language = "Danish"
});
settings.Analysis.Analyzers.Add("content", new CustomAnalyzer
{
CharFilter = new List<string>() { "html_strip", "parenthesis" },
Tokenizer = "whitespace",
Filter = new List<string>() { "lowercase", "snowball" }
});
和映射
{"searchservicepages":{
"_source":{
"excludes" : ["content"]
},
"properties":{
"content":{
"type":"string",
"index_analyzer"":"content"
}
}
}}