私は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;
私はいくつかのアプローチを試してみましたが、私は一つ一つの時間はどんな結果が得られません。私はいくつかの助けを捧げるだろう。