2012-06-18 80 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)); 
      } 
     } 
    } 
}