2012-11-27 1 views
1

최근 직장에서 내부 프로젝트를 위해 lucene.net에서 놀기 시작했습니다. lucene.net을 사용하여 일종의 자동 완성을 만들려고합니다. 내 색인은 표시 이름을 저장하며 와일드 카드 검색 즉 James *가 잘 작동합니다.필드에서 여러 단어 검색

제임스 본 *이라는 단어 사이에 공간이 생기는 문제가있는 것 같습니다. 첫 단어를 잊어 버린 채 보에 시도하고 시작하는 것 같습니다.

내가 잘못하고 있지만 다른 분석기 몇 개를 사용해 보았지만 운이 없다고 확신 할 수 있는지 확실하지 않습니다.

누구나 올바른 방향으로 나를 설레게 할 수있는 아이디어가 있습니까? 28/11/2012

내 프로젝트에서 다시보고 후, 나는 시도하고 여러 필드를 검색 할 MultiFieldQueryParser를 사용하던 것을 깨달았다. DefaultOperator를 변경하는 제안을 시도했지만 운이 없었습니다. 기본적으로

var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30); 
var mparser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, new string[] { "displayname", "company", "email" }, analyzer); 
+0

'queryParser.SetDefaultOperator (QueryParser.Operator.AND); '를 사용해 보셨습니까? –

+0

"Lucene은 구문 검색 쿼리가 아닌 단일 용어 내에서 단일 문자 및 복수 문자 와일드 카드 검색을 지원합니다. [출처] (http://lucene.apache.org/core/old_versioned_docs/versions/2_9_1/queryparsersyntax.html) –

+0

제안에 감사드립니다. 그것을 밖으로 시도하고 알려 드리겠습니다. –

답변

2

는 Lucene.net 제공된 용어가 아닌 AND 검색에 OR 검색을 수행합니다. 를 변경하려면이 코드를 사용

parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND); 
0

당신은 단지 하나의 필드에 여러 단어의 쿼리를 수행하는 경우는 다음 '처럼'연산자는 다음 라인 아래에 사용처럼 행동하는 여러 단어를 원한다.

parser.DefaultOperator = QueryParser.Operator.AND;