我有一個需求,我需要索引一些前綴爲(std)的文本,然後我應該可以再次搜索。通過ElasticSearch搜索括號
即,文檔(HTML)包含以下句子
(STD)Almindelige betingelser爲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"
}
}
}}
我建議有一個看看[分析API(http://www.elasticsearch.org/guide/reference/api/admin-indices-analyze /),稍微玩一下,看看你是如何分析你的文本和你索引什麼標記。我相信你會更多地瞭解你的數據發生了什麼,以及最好做什麼。 – javanna