我有一个对象-4:00:00
,具有属性Organization
,我想将其作为字符串进行搜索,例如
搜索字符串 12
会返回带有int Number
或Number = 12
等的组织...
现在,如果我设置Number = 5123
,则会在所有字段中都包含123的结果中,但是搜索非数字字符,例如“ goo”失败,出现searchStr = "123"
这是组织对象:
System.Exception: Invalid elasticSearch response
以及创建索引的代码:
public class Organization
{
public int? Id { get; set; }
public string Name { get; set; }
public string SecondName { get; set; }
public int Number { get; set; }
}
这是搜索“查询”:
var indexState = new IndexState();
var indexSettings = new IndexSettings();
indexSettings.Analysis = new Analysis();
indexSettings.Analysis.Analyzers = new Analyzers();
var customAnalyzer = GetStandardAsciifoldingAnalyzer();
indexSettings.Analysis.Analyzers.Add(STANDARD_ASCIIFOLDING_ANALYZER_NAME, customAnalyzer);
indexState.Settings = indexSettings;
var response = await _elasticClient.Indices.CreateAsync(indexName, index => index
.InitializeUsing(indexState).Map<Organization>(
x => x.Properties(ps => ps
.Number(s => s
.Name(n => n.Id)
.Type(NumberType.Integer)
)
.SearchAsYouType(s => s
.Name(n => n.Name)
.Analyzer(STANDARD_ASCIIFOLDING_ANALYZER_NAME)
)
.Text(s => s
.Name(n => n.SecondName)
.Fields(f => f
.Text(tt => tt
.Name("ngram")
.Analyzer("ngram_analyzer")
)
)
)
.Text(s => s
.Name(n => n.Number.ToString())
.Fields(f => f
.Text(tt => tt
.Name("ngram")
.Analyzer("ngram_analyzer")
)
)
)
)
)
);
我们将不胜感激任何帮助。