【发布时间】:2017-06-20 13:23:56
【问题描述】:
我对 Elasticsearch 很陌生。我一直在尝试实现一个相当基本的搜索功能,它会忽略撇号。我找到了documentation 的这一点。对于我使用 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;
我尝试了几种方法,但每次都没有得到任何结果。我会申请一些帮助。
【问题讨论】:
标签: elasticsearch nest