1 つの Redisearch で複数のインデックスを使用しており、各インデックスはコード内のクラスに関連付けられています。たとえば、XYZ ( List<XYZ>
) のデータはインデックス XYZ 経由で保存され、ABC ( List<ABC>
) のデータは ABC 経由で保存されます。
問題は、インデックス XYZ を使用して XYZ のデータを検索すると、ABC のデータも検索に表示されることです。これは、次のように簡単に再作成できます。
//declare three indexes. Some of them contain duplicate field names but this is to be expected (in real life we would have things like timestamps that spread across indexes)
ft.create sample1 schema sampletext text
ft.create sample2 schema sampleinteger numeric sortable
ft.create sample3 schema sampletext text sampleinteger numeric
//then we add a text under sample1
ft.add sample1 sample1doc 1.0 fields sampletext "hello this document is under an index called sample1"
//then display all the documents associated with the index sample3
ft.search "sample3" "*"
//-> prints the document above "hello this document is under..."
//display all the documents associated with the index sample2
ft.search "sample2" "*"
//-> the same result
どうしてこれなの?これに対する良い回避策はありますか?
FT.ADD が非推奨になったことはわかっていますが、C# ライブラリは依然として内部で FT.ADD を呼び出しているため、FT.ADD で動作させる必要があります。加えて、追加したばかりのドキュメントには「サンプルテキスト」しか含まれていないため、まだ sample2 の下には表示されません。とりあえず。