0

たとえば、3 つのフィールドを持つドキュメントがある場合、検索キーワードを含むフィールドの名前を知る必要があります。

  1. 書名
  2. 本の著者
  3. 本の価格

そして、私の検索条件は、フィールド 2 の「本の著者」にある「マイケル シンプソン」です。検索キーワードを含む検索結果を取得しましたが、この情報を保持するフィールドの名前を知る必要があります。

注: ドキュメントは 1 つしかなく、1 つのインデックスを持つ 3 つのフィールドがあります。

4

1 に答える 1

0

フィールド名を取得するには、サーチャーの説明を解析する必要があります。参照用のコード スニペットを次に示します。

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));
            }
        }
    }
}
于 2012-06-19T04:45:14.543 に答える