lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZED));
Field有两个属性可选:存储和索引。
通过存储属性你可以控制是否对这个Field进行存储;
通过索引属性你可以控制是否对该Field进行索引。
事实上对这两个属性的正确组合很重要。
TOKENIZED(分词) | YES | 被分词索引且存储 |
TOKENIZED | NO | 被分词索引但不存储 |
NO | YES | 这是不能被搜索的,它只是被搜索内容的附属物。如URL等 |
UN_TOKENIZED | YES/NO | 不被分词,它作为一个整体被搜索,搜一部分是搜不出来的 |
NO | NO | 没有这种用法 |
个人设置这两个属性主要依据还是要看这个Field是否要被索引是否要被存储,Field内容大小,和个人对其索引的重要性还是占了很大的比重。
注:同一Document下可以针对小的Field建立索引,查询出内容过大且存储没有被索引的Field(按查询需求设置)。
总结如下:
1.如果要对某Field进行查找,那么一定要把Field.Index设置为TOKENIZED或UN_TOKENIZED。TOKENIZED会对Field的内容进行分词;而UN_TOKENIZED不会,只有全词匹配,该Field才会被选中。
2.如果Field.Store是No,那么就无法在搜索结果中从索引数据直接提取该域的值,会使null。
补充:
Field.Store.YES:存储字段值(未分词前的字段值)
Field.Store.NO:不存储,存储与索引没有关系
Field.Store.COMPRESS:压缩存储,用于长文本或二进制,但性能受损
Field.Index.ANALYZED:分词建索引
Field.Index.ANALYZED_NO_NORMS:分词建索引,但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间
Field.Index.NOT_ANALYZED:不分词且索引
Field.Index.NOT_ANALYZED_NO_NORMS:不分词建索引,Field的值去一个byte保存
TermVector表示文档的条目(由一个Document和Field定位)和它们在当前文档中所出现的次数
Field.TermVector.YES:为每个文档(Document)存储该字段的TermVector
Field.TermVector.NO:不存储TermVector
Field.TermVector.WITH_POSITIONS:存储位置
Field.TermVector.WITH_OFFSETS:存储偏移量
Field.TermVector.WITH_POSITIONS_OFFSETS:存储位置和偏移量
相关推荐
import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; //... 初始化Directory和IndexWriter try (InputStream is = new FileInputStream("path_to_your_file.docx")) { ...
Field FieldTitle = new Field("title", vo.getTitle(), Field.Store.YES,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS); Field FieldRemark = new Field("remark", vo.getRemark(), Field....
doc2.add(new Field("title", "用于索引第2个标题", Field.Store.YES, Field.Index.ANALYZED)); doc2.add(new Field("content", "建立索引内容", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档至索引 ...
document.add(new Field("content", textReader, Field.Store.YES, Field.Index.ANALYZED)); // 可以添加更多字段 indexWriter.addDocument(document); } } indexWriter.optimize(); indexWriter.close(); ...
doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED)); writer....
doc.add(new StringField("content", "这是一个简单的Lucene应用", Field.Store.YES)); indexWriter.addDocument(doc); indexWriter.close(); // 创建索引读取器 IndexReader reader = DirectoryReader.open...
doc.add(new Field("content", "这是一个关于Lucene的简单代码实例", Field.Store.YES, Field.Type.TEXT)); indexWriter.addDocument(doc); indexWriter.close(); } } ``` 这段代码创建了一个索引,包含一个...
- Field.Index:定义了字段是否被索引以及如何索引。TOKENIZED表示分词索引,UN_TOKENIZED用于不分词的字段(如作者名或日期),NO表示字段不被索引,NO_NORMS则表示不计算词频和长度因子。 - Field.Store:决定...
org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store.Directory public abstract class Analyzer org.apache.lucene.analysis.Analyzer public final class ...
doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.TOKENIZED)); iwriter.addDocument(doc); iwriter.close(); IndexSearcher isearcher = new IndexSearcher(directory); QueryParser ...
doc.add(new TextField("content", "Java is a popular programming language", Field.Store.YES)); indexWriter.addDocument(doc); indexWriter.close(); directory.close(); } } ``` 创建索引后,我们可以...
doc.add(new Field("title", "Lucene索引器实例", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("content", "这是关于Lucene索引器的一个实例教程。", Field.Store.YES, Field.Index.ANALYZED)); ...
doc.add(new Field("content", "这是一个Lucene的HelloWorld示例", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档到索引 indexWriter.addDocument(doc); // 关闭写入器 indexWriter.close(); } }...
doc.add(new TextField("content", "这里是你的文本内容", Field.Store.YES)); // 添加字段 indexWriter.addDocument(doc); indexWriter.close(); } } ``` **搜索索引** 索引创建后,可以使用以下代码进行...
doc.add(new TextField("content", "这是一个测试文档", Field.Store.YES)); // 将文档添加到索引 indexWriter.addDocument(doc); // 关闭 IndexWriter,保存索引 indexWriter.close(); } } ``` 这段代码...
", Field.Store.YES)); writer.addDocument(doc); writer.commit(); writer.close(); // 搜索文档 DirectoryReader reader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher...