2017-05-02 1 views
0

Lucene.Net과 BoboBrowse를 함께 사용하고 있습니다. 시나리오마다 사전 정의 된 facethandlers가 있습니다. 내 질문 : 누구 lucene 문서 bool 유형/속성에 대한 처리기를 구현하는 방법을 알고 있습니까? 내 말은, 패싯 검색의 관점에서 두 개의 다른 값 "true"와 "false"를 가진 필드/패싯을 의미하므로 결과에는 물론 그 값이 포함됩니다. 그러나 그 결과 세트는 이상하게 보입니다. 사실 300 개, 거짓 400 개. bool 값이 false이면 결과 세트에는 모든 객체가 포함되어야하며 그 객체는 300으로 설정되어야합니다.BoboBrowser & Lucene.NET : Bool 패싯

감사합니다.

답변

0

Bobo-Browse.Net을 사용하면 패싯 설정의 두 가지 측면이 있습니다.

  1. 패싯은 응용 프로그램 시작시 정의되며 일반적으로 특정 필드 (또는 때로는 둘 이상의 필드)에 매핑됩니다.
  2. 선택 사항은 런타임에 정의되며 검색에 포함되는 값을 결정합니다. 일반적으로 선택 항목은 필드의 각 고유 값에 대한 불린 (boolean) 스위치처럼 작동합니다.

따라서 "부울"필드 (실제로는 일반 텍스트)의 경우 가능한 값은 2 개뿐입니다. 그러나 명심, 3 개 선택이 "부울"필드의 상태 실제로이 있습니다 : 선택

  1. 은 선택 "true"로
  2. "거짓"
  3. 아무것도 그것은 같은 소리

을 선택하지

  • 런타임 코드에서 "true"에 대한 단일 선택 항목을 추가/제거하고 모든 "true"값을 포함하게하거나, 선택 항목이 제거 된 경우 모든 값을 포함시키려는 것입니다. 이 정말 데모 될 운명과의 주석 쓰레기 코드를 많이 가지고 있지 않았지만
    BrowseSelection sel = new BrowseSelection("booleanField"); 
    if (value == true) 
    { 
        // Add the selection to filter the result 
        sel.AddValue("true"); 
    } 
    else 
    { 
        // Don't add a selection, and the result will not be filtered. 
    } 
    browseRequest.AddSelection(sel); 
    

    (이이 UI에서 설정하는 방법을 예를 들어 내 Faceted Search Prototype를 살펴 보라는 보여 않습니다 개념). 검색 부분을 생략하려면 QueryParser을 사용하여 쿼리를 구문 분석하는 대신 MatchAllDocsQuery을 사용해야합니다.