たとえば、3 つのフィールドを持つドキュメントがある場合、検索キーワードを含むフィールドの名前を知る必要があります。
- 書名
- 本の著者
- 本の価格
そして、私の検索条件は、フィールド 2 の「本の著者」にある「マイケル シンプソン」です。検索キーワードを含む検索結果を取得しましたが、この情報を保持するフィールドの名前を知る必要があります。
注: ドキュメントは 1 つしかなく、1 つのインデックスを持つ 3 つのフィールドがあります。
たとえば、3 つのフィールドを持つドキュメントがある場合、検索キーワードを含むフィールドの名前を知る必要があります。
そして、私の検索条件は、フィールド 2 の「本の著者」にある「マイケル シンプソン」です。検索キーワードを含む検索結果を取得しましたが、この情報を保持するフィールドの名前を知る必要があります。
注: ドキュメントは 1 つしかなく、1 つのインデックスを持つ 3 つのフィールドがあります。
フィールド名を取得するには、サーチャーの説明を解析する必要があります。参照用のコード スニペットを次に示します。
for (int i = 0; i < searcher.MaxDoc(); i++)
{
string searchExplanation = searcher.Explain(k, i).ToString();
int strtIdx = searchExplanation.IndexOf("field=");
string[] fieldName;
if (strtIdx != -1)
{
fieldName = searchExplanation.Substring(strtIdx).Split(',');
for (int j = 0; j < fieldName.GetLength(0) - 1; j++)
{
if (fieldNames.IndexOf(fieldName[j].Substring(6)) == -1)
{
fieldNames.Add(fieldName[j].Substring(6));
}
}
}
}