日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。