Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我使用StringField和StoredField时,Lucene Analyzer有什么用途_Java_Lucene - Fatal编程技术网

Java 当我使用StringField和StoredField时,Lucene Analyzer有什么用途

Java 当我使用StringField和StoredField时,Lucene Analyzer有什么用途,java,lucene,Java,Lucene,如果我只使用StringField和StoredField进行索引和搜索,那么分析器的用途是什么 由于StringFields没有标记化,我想知道这里分析器的真正用途是什么 我可以在没有分析器的情况下编写lucene索引吗?如果使用StoredField,则根本不会进行索引。文档刚刚被存储 如果使用StringField,则整个字段将作为单个标记进行索引,并且没有必要使用分析器。我只是尝试运行以下代码: Directory dir = new RAMDirectory(); Analyzer a

如果我只使用StringField和StoredField进行索引和搜索,那么分析器的用途是什么

由于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。。我试试这个。但是有一件事我经常从人们那里听到,我们需要在索引和搜索中使用相同的分析器,否则我们会得到一些错误的搜索结果…如果您的文档只有这个字段,那么查询应该使用
KeywordAnalyzer
,因为这个分析器将整个流作为一个标记来使用。谢谢@mindas。。在索引和使用TermQuery进行搜索时,将analyzer作为null传递可以正常工作。。当我使用StringField而不是TextField时,也获得了一些性能提升。