2014-01-24 2 views
3

나는 다음과 같은 클래스가 있습니다루씬 지수 다국어 복잡한 개체

public class Resource 
{ 
    public Guid? Id { get; set; } 
    public IList<LocalizedValue> LocalizedValues { get; set; } 
} 

public class LocalizedValue 
{ 
    public Guid? Id { get; set; } 
    public Resource Resource { get; set; } 
    public string Locale { get; set; } 
    public string TextValue { get; set; } 
} 

이이 같은 다른 객체의 다국어 데이터를 저장하는 데 사용됩니다

public class Job 
{ 
    public Resource Description { get; set; } 

    // some other properties... 
} 

은 그래서를 저장할 수있어 설명은 여러 언어로 제공됩니다.

Lucene.Net에서 Job 개체 (해당 Resource 속성 포함)를 색인화하여 모든 언어 또는 지정된 언어로 검색 할 수 있습니다.

다른 관련 질문을 SO 나 다른 곳에서 보았지만, 무엇을해야할지 잘 모르겠습니다.

여러 필드 (작업 클래스의 각 리소스의 각 TextValue에 하나씩)를 사용하는 것을 고려했지만, 텍스트가 어느 언어로되어 있는지 식별 할 수있는 방법은 무엇입니까?

내가 한 방법이나 다른 방법으로 관리 할 수있을 것이라고 생각하지만 누군가가 내가 실종되었다는 훌륭한 생각을 갖고있는 경우를 대비해 묻습니다.

답변

2
각 언어에 대해 내가 N + 1 개 필드를 만들 것

, 1, 1 곳 당신은 모든 것을 넣어.

doc.addField("EN", //english stuff); 
doc.addField("NL", //dutch stuff); 
doc.addField("all", //english stuff and dutch stuff); 

을이 시나리오에서는, 특정 언어 내에서 검색이 필드를 사용한다면. 모든 언어로 검색하려면 all

all 필드를 검색 할 때 어떤 언어인지 찾으려면; 당신은 그렇게 쉽게 할 수 없습니다. N 부울 쿼리 (allEN), (allNL)를 사용할 수 있습니다.

또는 더 나은 경우 모든 언어 입력란에 facets을 작성하십시오. 그런 다음 하나의 (빠른) 쿼리에서 각 언어 필드의 facetscount를 검색 할 수 있습니다. 가장 높은 점수를받는 패싯은 검색과 일치하는 언어입니다.