2015-01-21 47 views

回答

0

如果使用StoredField,則根本沒有索引。該文件只是存儲。

如果您使用StringField,則整個字段會被索引爲單個標記,並且使用分析器沒有意義。我只是試着運行下面的代碼:

Directory dir = new RAMDirectory(); 
Analyzer analyzer = null; 
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_1, analyzer); 
IndexWriter indexWriter = new IndexWriter(dir, iwc); 

Document doc1 = new Document(); 
doc1.add(new StringField("title", "aa", Field.Store.YES)); 
indexWriter.addDocument(doc1); 
indexWriter.commit(); 

IndexReader reader = IndexReader.open(dir); 
IndexSearcher searcher = new IndexSearcher(reader); 
// print results using MatchAllDocsQuery 

它的工作沒有拋出異常。

+0

謝謝@mindas ..我會試試這個。但我總是從人們那裏聽到的一件事是,我們需要在索引和搜索中使用相同的分析器,否則我們會得到一些錯誤的搜索結果... – Shankar 2015-01-21 13:53:40

+0

如果您的文檔僅包含此字段,則應該使用'KeywordAnalyzer'該分析儀可以將整個數據流作爲單個標記工作。 – mindas 2015-01-21 14:16:27

+0

謝謝@mindas ..將分析器傳遞爲null時索引和使用TermQuery進行搜索工作正常..當我使用StringField而不是TextField時也獲得了一些性能增益。 – Shankar 2015-01-22 07:30:49

相關問題