2012-07-11 66 views
0

我創建一個Lucene的文件是這樣的:JAVA Lucene沒有給字段上的搜索結果?

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場? – 2012-07-11 17:43:10

回答

0

您應該使用通配符查詢來支持這種功能。 此鏈接將幫助:

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

所以,你應該做的究竟是什麼創建使用QueryParser的兩個查詢之一,並使用通配符查詢等,然後同時使用在BooleanQuery查詢與這兩個「應該」條款查詢。

此鏈接布爾查詢訪問的細節:

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

分析是否使用的是