2012-07-11 2 views
0

나는이 같은 루씬 문서를 만드는 오전 :JAVA Lucene이 Field에서 검색 결과를 제공하지 않습니까?

Document document = new Document(); 
document.add(new Field(FIELD_FOLDER_PATH,mSearchInput, Field.Store.YES, Field.Index.NOT_ANALYZED)); 
Reader reader = new FileReader(file); 
document.add(new Field(FIELD_CONTENTS, reader)); 
indexWriter.addDocument(document); 

와일드 문자를 사용하여도 내용에 대한 쿼리를 실행하고 * 나는 결과를 가져올 수 있어요 :

QueryParser queryParser = new QueryParser (Version.LUCENE_36,FIELD_CONTENTS, analyzer); 
Query query = queryParser.parse(searchString+"*"); 

을하지만 같은를 사용하고 때 질의 FIELD_FOLDER_PATH을 위해, 나는 아무 결과도 점점하지 오전 : 나는 정확한 문자열을 제공하고 있습니다 만 그러나

QueryParser queryParser = new QueryParser (Version.LUCENE_36,FIELD_FOLDER_PATH, analyzer); 
Query query = queryParser.parse(FolderPath+"*"); 

을, 나는 입술을 가져올 수 있어요 ults.

내 질문 : FIELD_FOLDER_PATH에서 결과를 가져 오기 위해 (*)를 사용할 수없는 이유는 무엇입니까? 내가 필드를 만드는 방식 때문입니까?

+0

때 인덱싱과 FIELD_FOLDER_PATH 필드를 검색 하시나요? –

답변

0

이러한 종류의 기능을 지원하려면 와일드 카드 쿼리를 사용해야합니다. 이 링크는 도움이 될 것이다 :

http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/core/org/apache/lucene/search/WildcardQuery.html

그래서 당신이 정확히 무엇을해야 두 쿼리의 queryparser를 사용하여 하나 와일드 카드 쿼리를 사용하여 기타를 만드는 것입니다, 다음 모두를위한 "SHOULD"절과 함께 BooleanQuery에서 쿼리를 모두 사용 검색어.

부울 쿼리 방문에 관한 자세한 사항은이 링크에 대한

: 분석기 사용중인

http://lucene.apache.org/core/old_versioned_docs/versions/3_0_2/api/core/org/apache/lucene/search/BooleanQuery.html

관련 문제