弹性搜索没有返回正确的结果



我有下面列出的一些旅行。

<
  • 难忘的伊斯坦布尔/gh>
  • 难忘的雅典城之旅
  • 难忘的罗马城市逃脱
  • <
  • 难忘的巴黎/gh>

我已经在elasticsearch中创建了一个索引,如下所述。

string newName = indexName + DateTime.Now.Ticks;
CreateIndexDescriptor createIndexDescriptor = new CreateIndexDescriptor(newName)
.Settings(s => s
.NumberOfShards(4)
.NumberOfReplicas(2)
.Setting("max_result_window", int.MaxValue)
.Setting("max_ngram_diff", 25)
.Analysis(a => a
.Analyzers(aa => aa
.Custom("my_analyzer", ca => ca
.Tokenizer("standart")
.Filters("lowercase", "my_ascii_folding", "my_stemm", "stop")
)
)
.TokenFilters(t => t
.AsciiFolding("my_ascii_folding", af => af.PreserveOriginal(true))
.Stemmer("my_stemm", sm => sm.Language("english"))
//.EdgeNGram("key_edgengram", ng => ng.MinGram(4).MaxGram(10))
)
.Tokenizers(t => t.Standard("standart"))
)
)
.Map<T>(mm => mm.AutoMap().Properties(p => p.SearchAsYouType(t => t.Name(n => n.SearchingArea).Analyzer("my_analyzer"))));
MemoryStream stream = new MemoryStream();
elasticClient.RequestResponseSerializer.Serialize(createIndexDescriptor, stream);
string jsonData = Encoding.UTF8.GetString(stream.ToArray());
var indexResponse = elasticClient.Indices.Create(createIndexDescriptor);

当我试图搜索"记忆"时或";memorable"它返回所有这些。但我试着去寻找"记忆"。或";memorabl"它不返回任何结果。

这是我的搜索查询:

GET /tourIndex/_search
{
"from": 0,
"highlight": {
"fields": {
"searchingArea": {},
"route": {}
},
"post_tags": [
"</strong>"
],
"pre_tags": [
"<strong style='background: #efefef; padding: 3px;'>"
]
},
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"match": {
"searchingArea": {
"query": "memorab"
}
}
}
]
}
},
"size": 20,
"sort": [
{
"score": {
"order": "desc"
}
}
]
}

当我使用"match_phrase_prefix"和"match_phrase" .

谢谢你的帮助。

添加工作示例

指数映射:

{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer",
"filter": "lowercase"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "edge_ngram",
"min_gram": 4,
"max_gram": 15,
"token_chars": [
"letter",
"digit"
]
}
}
},
"max_ngram_diff": 25
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}

索引数据:

{
"title": "Memorable Istanbul"
}
{
"title": "Memorable Athens City Escape"
}
{
"title": "Memorable Rome City Escape"
}
{
"title": "Memorable Paris"
}

搜索查询:

{
"query": {
"match": {
"title": "memorab"
}
}
}

搜索结果:

"hits": [
{
"_index": "66262920",
"_type": "_doc",
"_id": "4",
"_score": 0.47070155,
"_source": {
"title": "Memorable Paris"
}
},
{
"_index": "66262920",
"_type": "_doc",
"_id": "1",
"_score": 0.41747034,
"_source": {
"title": "Memorable Istanbul"
}
},
{
"_index": "66262920",
"_type": "_doc",
"_id": "3",
"_score": 0.41747034,
"_source": {
"title": "Memorable Rome City Escape"
}
},
{
"_index": "66262920",
"_type": "_doc",
"_id": "2",
"_score": 0.38820273,
"_source": {
"title": "Memorable Athens City Escape"
}
}
]

最新更新