2012-06-18 75 views
0

我需要知道包含搜索關鍵字的字段的名稱,例如如果我有有文件三個方面:Lucene.NET:包含搜索關鍵字的字段名稱

  1. 書的名稱
  2. 作者
  3. 價格本書

我的搜索條件是「邁克爾·辛普森」,這是提供的該領域2「該書的作者」。現在我得到了包含我的搜索關鍵字的搜索結果,但需要知道包含此信息的字段的名稱。

注:我只有一個文檔,並有三個字段與一個索引。

+1

http://lucene.472066.n3.nabble.com/Return-Lucene-field-name-when-a-query-is-matched-td3437470.html – Mikos

+0

感謝mikos它的工作 – NoDisplay

+0

爲什麼你需要知道它是否來自作者領域?爲了促進目的?你有沒有考慮將字段(或增強)信息存儲爲有效載荷? – sisve

回答

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)); 
      } 
     } 
    } 
}