2012-06-18 7 views
0

검색된 키워드가 포함 된 필드의 이름을 알아야합니다. 나는 문서를 가진 세 개의 필드가있는 경우 : 책의Lucene.NET : 검색 키워드가 포함 된 필드 이름

  1. 이름을
  2. 책의
  3. 저자
  4. 에서 사용할 수

그리고 내 검색 기준이 "마이클 심슨"입니다 책의

  • 가격 필드 -2 "책의 저자". 이제는 검색 키워드가 포함 된 검색 결과를 얻었지만이 정보가 들어있는 필드의 이름을 알아야합니다.

    참고 : 문서가 하나 뿐이며 인덱스가 3 개인 필드가 하나 있습니다.

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