0
如果我只使用StringField和StoredField進行索引和搜索,那麼Analyzers的用途是什麼?當我使用StringField和StoredField時,Lucene分析器的用途是什麼
由於StringFields沒有標記化,我想知道分析器在這裏的真實用途是什麼?
我可以在沒有分析儀的情況下編寫lucene索引嗎?
如果我只使用StringField和StoredField進行索引和搜索,那麼Analyzers的用途是什麼?當我使用StringField和StoredField時,Lucene分析器的用途是什麼
由於StringFields沒有標記化,我想知道分析器在這裏的真實用途是什麼?
我可以在沒有分析儀的情況下編寫lucene索引嗎?
如果使用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
它的工作沒有拋出異常。
謝謝@mindas ..我會試試這個。但我總是從人們那裏聽到的一件事是,我們需要在索引和搜索中使用相同的分析器,否則我們會得到一些錯誤的搜索結果... – Shankar 2015-01-21 13:53:40
如果您的文檔僅包含此字段,則應該使用'KeywordAnalyzer'該分析儀可以將整個數據流作爲單個標記工作。 – mindas 2015-01-21 14:16:27
謝謝@mindas ..將分析器傳遞爲null時索引和使用TermQuery進行搜索工作正常..當我使用StringField而不是TextField時也獲得了一些性能增益。 – Shankar 2015-01-22 07:30:49