1

同義語を見つける結果セットを返すために、エラスティック検索インデックスを取得しようとしています

 var synonyms = new List<string> { "egg , embryo"};
        var indexSettings = new IndexSettings();
       // <snip>
        indexSettings.Analysis.TokenFilters.Add("synonym",
                                                new SynonymTokenFilter
                                                {
                                                    Synonyms = synonyms,
                                                    Expand = false,
                                                    IgnoreCase = true,
                                                });

Elastic Search Head を介してインデックス メタデータを調べて、作成されたインデックスにシノニム リストが含まれていることを確認しました。同義語エントリの例は次のようになります。「卵、胚」しかし、単純なクエリを実行すると、結果が得られません

return ElasticClient.Search(s => s
            .Query(q => q
                 .QueryString(qs => qs
                     .Query("egg")
                 )
             )
        );

エンティティは次のようになります (関連するプロパティが表示されます)

[ElasticType(Name = "Entry", IdProperty = "Id")]
public class Entry
{
        public int Id { get; set; }
        public string Title { get; set; }
}

「embryo」というタイトルのエントリが索引付けされています。" => " 構文を使用して、Expand のさまざまな順列を true および false に設定してみました。

4

1 に答える 1

1

「シノニム」と呼ばれる新しいアナライザーを正常に登録しましたが、シノニム アナライザーを設定するプロパティにそれを適用する必要があります。

https://github.com/elasticsearch/elasticsearch-net/blob/master/src/Tests/Nest.Tests.Integration/Indices/Analysis/Analyzers/AnalyzerTests.cs

これにはさまざまな統合テストがあります。

于 2013-01-30T17:23:54.407 に答える