2009-04-07 2 views
0

IndexEmbedded으로 추가 된 데이터를 쿼리하려면 어떻게합니까?
나는 인덱스에 엔티티 클래스를IndexEmbedded으로 인덱싱 된 데이터를 쿼리하는 방법 (전체 텍스트는 nhibernate.search에 있음)

[Indexed] 
    public class Something 
    { 
    [Field(Index.Tokenized, Store = Store.Yes)] 
    public virtual string Description { get; set; } 

    [IndexedEmbedded] 
    public virtual Category Category { get; set; } 
    [IndexedEmbedded] 
    public virtual Location Location { get; set; } 
    } 

위치

데이터가 추가됩니다
[Indexed] 
    public class Location 
    { 
    /// </summary>    
    [Field(Index.Tokenized, Store = Store.Yes)] 
    public virtual string Address 
    { 
    } 

로 (IndexEmbedded 일반 속성 모두)를하고 난 그들에게 누가 복음를 사용하여 볼 수 있습니다. 단지 일반 속성이 아니라 에 대한
내가 전체 텍스트를 사용하여 쿼리 할 때 그러나 내가 얻을 유효한 결과는

예를 IndexedEmbedded "샘플 설명"=> 한 결과, "팔로 알토 (Palo Alto)"=> 0 결과는 이것은

using (IFullTextSession s = Search.CreateFullTextSession(NHibernateSession.GetSession())) { 
     MultiFieldQuerParser qp = new MultiFieldQueryParser(new[] { 
                    “Description”,“Title”,”Name” 
                    }, new StandardAnalyzer()); 
     IQuery NHQuery = s.CreateFullTextQuery(qp.Parse(query), typeof(Something)); 
     result = NHQuery.List(); 

내가 뭔가 잘못하고 또는 아무것도 실종 내 쿼리입니다 (둘 다 인덱스에있는)?

답변

2

내가보기에, 당신은 IndexedEmbedded 콜렉션의 필드를 참조하고 있지 않습니다. 당신은 속성 이름 접두사 당신의 MultiFieldQueryParser

new MultiFieldQueryParser(new[] {"Description", "Title", "Name", "Location.Address"}) 

필드에 대한 올바른 이름은 누가 복음에서 볼 수 있어야에서 다음 필드를 추가해야합니다 당신은 속성과를 IndexedEmbedded 적용했다.


편집 : 기본 추가하는 설정이 마음에 들지 않는다면, 당신은 의 접두사 인수를 변경할 수는 속성

을 IndexedEmbedded
관련 문제