Java 当我使用StringField和StoredField时,Lucene Analyzer有什么用途
如果我只使用StringField和StoredField进行索引和搜索,那么分析器的用途是什么 由于StringFields没有标记化,我想知道这里分析器的真正用途是什么Java 当我使用StringField和StoredField时,Lucene Analyzer有什么用途,java,lucene,Java,Lucene,如果我只使用StringField和StoredField进行索引和搜索,那么分析器的用途是什么 由于StringFields没有标记化,我想知道这里分析器的真正用途是什么 我可以在没有分析器的情况下编写lucene索引吗?如果使用StoredField,则根本不会进行索引。文档刚刚被存储 如果使用StringField,则整个字段将作为单个标记进行索引,并且没有必要使用分析器。我只是尝试运行以下代码: Directory dir = new RAMDirectory(); Analyzer a
我可以在没有分析器的情况下编写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。。我试试这个。但是有一件事我经常从人们那里听到,我们需要在索引和搜索中使用相同的分析器,否则我们会得到一些错误的搜索结果…如果您的文档只有这个字段,那么查询应该使用
KeywordAnalyzer
,因为这个分析器将整个流作为一个标记来使用。谢谢@mindas。。在索引和使用TermQuery进行搜索时,将analyzer作为null传递可以正常工作。。当我使用StringField而不是TextField时,也获得了一些性能提升。