0
我對Elasticsearch相當陌生。我一直在試圖實現一個可以忽略撇號的基本搜索功能。我發現documentation這一點。對於實現我用巢庫:ElasticSearch(Nest) - 忽略撇號
[ElasticsearchType]
public class MappingTest
{
[Text(Analyzer = "english")]
public string Title { get; set; }
}
索引/搜索:
var indexName = "testindex";
var connectionSettings =
new ConnectionSettings(
new Uri("https://url.com"))
.DefaultIndex(indexName).EnableDebugMode();var client = new ElasticClient(connectionSettings);
if (client.IndexExists(Indices.All, descriptor => descriptor.Index(indexName)).Exists)
client.DeleteIndex(indexName);
var response = client.CreateIndex(indexName, i => new CreateIndexDescriptor(indexName)
.Mappings(ms => ms
.Map<MappingTest>(m => m.AutoMap())
).Settings(s => s
.Analysis(a => a
.Analyzers(aa => aa
.Custom("english", ca => ca
.Tokenizer("standard")
.Filters("english_possessive_stemmer", "lowercase")
)
)
.TokenFilters(
t => t.Stemmer("english_possessive_stemmer", d => d.Language("possessive_english")))
.TokenFilters(
t => t.Stemmer("english_stemmer", d => d.Language("english")))
.TokenFilters(
t => t.Stop("english_stop", d => d.StopWords("_english_")))
)
));
var obj = new MappingTest() { Title = "Example's" };
var indexResponse = client.Index(obj);
var term = "example";
QueryContainer commonQuery =
Query<MappingTest>.QueryString(qs => qs.Query(term).DefaultField(f => f.Title));
var searchResponse = client.Search<MappingTest>(s => s.Query(x => commonQuery));
var debug = searchResponse.DebugInformation;
我嘗試了一些方法,但每一次我沒有得到任何結果。我會提供一些幫助。