2009-06-19 2 views
1

사용자가 만들 때 쿼리내가 incesitive 내 쿼리의 경우 필드 이름을하고 싶습니다

title:Jurassic 

또는

Title:Jurassic 

NHibernate Search는 동일한 결과를 산출합니다.

Lucene이 작동하는 방식을 이해하는 것처럼 필드 이름은 대소 문자를 구분합니다. 검색 할 때 필드 이름을 인덱싱하고 소문자로 표시 할 때 NH Search/Lucene에서 필드 이름을 소문자로 구성 할 수 있습니까?

답변

1

필드 이름은 대/소문자를 구분합니다. 한 가지 방법은 모든 필드를 완전히 소문자로 지정하고 쿼리를 소문자로 변환하는 것입니다.

클래스 예제 :

[Indexed] 
class Article 
{ 
    [Field(Name="title", Index=Index.Tokenized, Store=Store.No)] 
    Title { get; set; } 
} 

쿼리 예를

string query = tbSearch.Text; 
query = query.ToLower(); 
IFullTextQuery ftq = search.CreateFullTextQuery(query); 
+0

나는 내가 항상 소문자 모든 것을 알고 있었다. 대/소문자를 구분하지 않고 필드를 일치시키는 쿼리 구문 분석기를 자동으로 구성하는 방법이 있는지 궁금합니다. –

+0

나는 그것을 처리하는 가장 좋은 방법은 자신의 QueryParser를 만드는 것이다. Lucene.Net에는 MultiFieldQueryParser가 제공됩니다. 이 클래스의 소스 코드를 확인하면 커스텀 QueryParser를 만드는 데 필요한 것을 이해하는 데 도움이 될 것입니다. –

+2

AND/OR/NOT/TO와 같은 모든 연산자는 대문자 여야하므로 QueryParser는 더 이상 연산자를 인식하지 못합니다. – binco