我有一个要求,我需要索引一些带有(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"
}
}
}}
答案 0 :(得分:0)
问题在于映射。
您应该将"index_analyzer": "content"
更改为"analyzer":"your_analyzer_name"
虽然您的映射给我带来了麻烦,但映射后的索引设置相同。
"testindex": {
"testdoc": {
"_source": {
"excludes": [
"content"
]
},
"properties": {
"content": {
"type": "string",
"analyzer": "myAnalyzer"
}
}
}
顺便说一下,我正在使用ES 0.90.2