2012-06-11 3 views
0

예를 들어, "lucene index"라는 필드에 "color"라고 말하면됩니다. 물론 가치가 다릅니다.특정 필드에서 사용 가능한 값을 얻으십시오.

그런 다음 드롭 다운이있는 "고급 검색 페이지"가 ​​있는데,이 드롭 다운에서 "색상"필드에 포함 된 모든 사용 가능한 값 (별개)을 표시하고 싶습니다.

Lucene 버전은 Version.LUCENE_29입니다.

EDIT : 용액 발견 Find all available values for a field in lucene .net

private List<string> GetAvailableFields(string fieldName) 
    { 
     List<string> fieldValues; 

     using (var readerRepository = new LucineRepository(RepositoryPath)) 
     { 
      var reader = readerRepository.Reader; 
      fieldValues = reader.UniqueTermsFromField(fieldName).ToList(); 
      reader.Close(); 
     } 

     return fieldValues; 
    } 

public static class ReaderExtentions 
{ 
    public static IEnumerable<string> UniqueTermsFromField(this IndexReader reader, string field) 
    { 
     var termEnum = reader.Terms(new Term(field)); 

     do 
     { 
      var currentTerm = termEnum.Term(); 

      if (currentTerm.Field() != field) 
       yield break; 

      yield return currentTerm.Text(); 
     } while (termEnum.Next()); 
    } 
} 

건배 토미.

답변

0

Lucene은 '고유 한'기능을 제공하지 않습니다.

var document = new Document(); 
document.Add(new Field("color", "foo", Field.Store.YES, Field.Index.NOT_ANALYZED)); 
... 

TermEnum terms = indexReader.Terms(new Term("color")); 
// enumerate the colors 
:

당신은

당신이 아래의 코드를 시도 할 수 있음을 달성하기 위해 자신의 코드를 작성해야

관련 문제