1

NEST c# クライアントを使用して ElasticSearch でクエリをアクセントなしのクエリにしようとしています。データにはアクセント付きのポルトガル語ラテン語が含まれています。以下のコードを参照してください。

var result = client.Search<Book>(s => s
    .From(0)
    .Size(20)
    .Fields(f => f.Title)
    .FacetTerm(f => f.OnField(of => of.Genre))
    .Query(q => q.QueryString(qs => qs.Query("sao")))
);

この検索で​​は何も見つかりませんでした。このインデックスの私のデータには、「São Cristóvan」、「São Gonçalo」などの多くのタイトルが含まれています。

var settings = new IndexSettings();
settings.NumberOfReplicas = 1;
settings.NumberOfShards = 5;
settings.Analysis.Analyzers.Add("snowball", new Nest.SnowballAnalyzer { Language = "Portuguese" });
var idx5 = client.CreateIndex("idx5", settings);

ElasticSearch を使用してクエリ「sao」を作成し、「são」を検索するにはどうすればよいですか?

適切なプロパティでインデックスを作成する必要があると思いますが、すでに多くの設定を試しました。

または生モード:

    {
     "idx": {
       "設定" : {
         "index.analysis.filter.jus_stemmer.name": "ブラジル",
         "index.analysis.filter.jus_stop._lang_": "ブラジル"
       }
     }
    }

アクセントを無視して検索するにはどうすればよいですか?

友よありがとう、

4

3 に答える 3

4

解決策を参照してください。

パテ実行でelasticsearch検索に接続します。

curl -XPOST 'localhost:9200/idx30/_close'

curl -XPUT 'localhost:9200/idx30/_settings' -d '{
            "index.analysis.analyzer.default.filter.0": "standard",
            "index.analysis.analyzer.default.tokenizer": "standard",
            "index.analysis.analyzer.default.filter.1": "lowercase",
            "index.analysis.analyzer.default.filter.2": "stop",
            "index.analysis.analyzer.default.filter.3": "asciifolding",
            "index.number_of_replicas": "1"
}'

curl -XPOST 'localhost:9200/idx30/_open'

idx30」をインデックスの名前に置き換えます

終わり!

于 2013-05-03T12:20:28.173 に答える