lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...
生活随笔
收集整理的這篇文章主要介紹了
lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言:上一章中我們已經實現了索引器的創建,但是我們沒有索引文檔,本章將會講解如何生成字段、創建索引文檔,給字段加權以及保存文檔到索引器目錄
luncene5.5.3集合jar包下載地址:http://download.csdn.net/detail/eguid_1/9677589
一、創建索引文檔
一個索引目錄可以放多個索引文檔,每個索引文檔由多個索引字段組成,索引字段由要索引的字段名和字段內容以及權重值組成
1、構建索引字段并加權
/*** 創建索引字段* @param boost* -權重值* @param fieldName* - 字段名* @param statement* -內容* @param fieldType* -字段存儲類型* @return*/public Field createField(String fieldName, String statement, FieldType fieldType, Float boost) {Field field = null;if (fieldName != null && statement != null && fieldType != null) {field = new Field(fieldName, statement, fieldType);if (boost != null) {field.setBoost(boost);}}return field;}/*** 創建索引字段* * @param fieldName* @param reader* @param type* @param boost* @return*/public Field createField(String fieldName, Reader reader, FieldType type, Float boost) {Field field = null;if (fieldName != null && reader != null) {field = new Field(fieldName, reader, type);if (boost != null) {field.setBoost(boost);}}return field;}/*** 創建索引字段* * @param fieldName* @param tokenStream* @param type* @param boost* @return*/public Field createField(String fieldName, TokenStream tokenStream, FieldType type, Float boost) {Field field = null;if (fieldName != null && tokenStream != null) {field = new Field(fieldName, tokenStream, type);if (boost != null) {field.setBoost(boost);}}return field;}/*** 創建索引字段* * @param fieldName* @param value* @param type* @param boost* @return*/public Field createField(String fieldName, byte[] value, FieldType type, Float boost) {return value != null ? createField(fieldName, value, 0, value.length, type, boost) : null;}/*** 創建索引字段* * @param fieldName* @param value* @param offset* @param length* @param type* @param boost* @return*/public Field createField(String fieldName, byte[] value, int offset, int length, FieldType type, Float boost) {Field field = null;if (fieldName != null && value != null && type != null) {field = new Field(fieldName, value, offset, length, type);if (boost != null) {field.setBoost(boost);}}return field;}
2、創建索引文檔
/*** 創建索引文檔* * @return*/public Document createDocument() {return new Document();}
二、添加字段到索引文檔
/*** 把字段存放到索引文檔* * @param document* @param field* @return*/public Document addFiled(Document document, Field field) {if (field != null) {document.add(field);}return document;}/*** 批量存放字段到索引文檔* @param document* @param fields* @return*/public Document addFiledList(Document document, Field... fields) {if (fields != null && fields.length > 0) {for (Field field : fields) {document.add(field);}}return document;}
三、給索引器添加索引文檔
使用上一章中的方法把生成的文檔添加到索引中
事實上我們常把索引文檔根據不同分類保存到不同的索引目錄,再搜索時可以根據不同索引目錄進行搜索。
例如:
Analyzer analyzer=createAnalyzer(false);Directory dir=createDirectory(null, "d:","dir","search");IndexWriterConfig conf=createIndexConf(analyzer, OpenMode.CREATE_OR_APPEND, false);IndexWriter index=createIndex(dir, conf);//創建一個文檔Document doc=createDocument();String[] states = new String[] {"歡迎來到eguid的博客", "歡迎大家來到eguid的技術博客", "歡迎大家來到eguid的技術博客,很開心能和大家一起分享開源技術"};//創建字段Field[] fields=createFields("字段名", states, TextField.TYPE_STORED, 1.1f);//批量增加字段到索引文檔addFiledList(doc, fields);//把索引文檔保存到索引器index.addDocument(doc);這樣就把添加了一個索引,想要搜索這個索引,那么接下來讓我們創建搜索器吧
下一章:lucene全文搜索之四:創建索引搜索器、6種文檔搜索器實現以及搜索結果分析(結合IKAnalyzer分詞器的搜索器)基于lucene5.5.2
轉載于:https://www.cnblogs.com/eguid/p/6821574.html
總結
以上是生活随笔為你收集整理的lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi语言最好的JSON代码库 m
- 下一篇: 判断点在线段上