2012-10-25 3 views
2

내가 이런 User 클래스했다 말RavenDB Lucene 검색 결과를 어떻게 필터링해야합니까?</p> <pre><code>public class User { public bool IsActive {get;set;} public string[] Tags{get;set;} public string Description {get;set;} } </code></pre> <p>내가 다음 기준에 일치하는 사용자의 설정을 검색 RavenDB를 사용하고 싶습니다 :

  • IsActive = 사실을
  • Tags에는 '안녕하세요'및 '세계'
  • ,
  • Description는 다음과 같은 문구 나는 루씬 쿼리 구문을 연구 한

'비참한 실패'를 가지고, 심지어 작업 몇 가지 물건을 가지고 있지만, 모두 만들 수있는 조합 문자열 건물의 많은 무섭게 투박한 느낌 텍스트 기반 lucene 쿼리 문자열. 나는 냄새가 꽤 나기 때문에 여기에 내 코드를 올리는 것을 망설이다.

설명과 태그에 Lucene Search을 제출 한 다음 IsActive 필드에 Where 절 (아마도 Filter RavenDB Search Results처럼)으로 필터링하고 싶습니다. 그러나 나는 길을 잃었다.

최신 공식 릴리스 (960)를 사용 중이므로 이후에 오는 모든 그루비 물건을 사용할 수 없습니다. 예를 들어, this solution은 verboten이므로 960은 .As<T>() 확장을 지원하지 않습니다.

  • 하나의 제약 조건, 예를 들어 IsActive
  • 컬렉션 제약 조건, 예를 들어 Tags
  • : 나는 통합 검색을 수행하는 데 필요한 인덱스 및 쿼리를 구성하려면 어떻게

    질문

  • 자유 텍스트 제약 조건 예 : Description

User의 강력한 형식의 목록을 반환 하시겠습니까?

코드 예제 또는 포인터를 제공해 주셔서 감사합니다.

답변

1

는이처럼 조회 : YourUserIndex은 다음과 같습니다

var results = (from u in Session.Query<User>("YourUserIndex") 
       where u.IsActive && u.Tags.Any(x=>x == "hello") && x.Tags.Any(x=>x=="world") 
       select u) 
       .Search(x=>x.Description, "abject failure") 
       .ToList(); 

:

from u in docs.Users 
select new { u.IsActive, u.Tags, u.Description }; 

가 그리고 당신은 분석으로 설명 필드를 표시해야합니다.

관련 문제

 관련 문제