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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

域选项

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 域选项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【名詞】

  • 文檔 :文件,相當于數據表中的一條記錄
  • 域(Field) :數據中一列(字段)就稱為域,在這里域就是文檔的一個屬性

?

Field.Store

  • YES :在索引文件中存儲域的內容,存儲的內容可以方便文檔恢復
  • NO :不在索引文件中存儲域內容,恢復時無法完整進行恢復(無法通過doc.get()進行獲取)

注:實際使用時一般正文是不會進行存儲的

?

Field.Index

?

  • ANALYZED :表示進行分詞和索引,一般多用于標題和正文
  • NOT_ANALYZED :表示不進行分詞。但進行索引。一般用于Id、身份證號碼、電話等精確查找的內容
  • ANALYZED_NO_NORMS :表示進行分詞并索引,但不存儲Norms(包含了索引的權值信息)信息。正常情況下,搜索列表是按照權值進行排序的。做的比較好的是Google
  • NOT_ANALYZED_NO_NORMS :即不分詞也不存儲Norms信息
  • No :不進行索引和分詞

?

【示例】

創建索引:

1 /** 2 * 創建索引 3 */ 4 @Test 5 public void testIndex(){ 6 //存儲3篇文章的信息。包括:id、標題、作者、內容 7 int[] ids = {1,2,3}; 8 String[] titles = {"Hello","I love you","morning"}; 9 String[] authors = {"Mike","HanMeimei","Tom"}; 10 String[] contents= {"Hello,My Name Is Mike","Tome,I Love You","Good Moring,I'm so sorry,"}; 11 12 IndexWriter writer = null; 13 14 try { 15 //1、創建Directory 16 Directory directory = FSDirectory.open(new File("E:\\lucene\\index2")); 17 18 //2、創建Writer 19 IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, 20 new StandardAnalyzer(Version.LUCENE_35)); 21 22 writer = new IndexWriter(directory, config); 23 24 //3、創建Document 25 Document doc = null; 26 27 //4、設置Field 28 //文檔 :文件,相當于數據表中的一條記錄 29 //域(Field) :數據中一列(字段)就稱為域,在這里域就是文檔的一個屬性 30 for(int i = 0;i<ids.length;i++){ 31 doc = new Document(); 32 33 //域屬性 34 //Store(配置域的存儲方式) 35 //YES :在索引文件中存儲域的內容,存儲的內容可以方便文檔恢復 36 //NO :不在索引文件中存儲域內容,恢復時無法完整進行恢復(無法通過doc.get()進行獲取) 37 //實際使用時一般正文是不會進行存儲的 38 39 //Index(配置域的索引選項) 40 //ANALYZED :表示進行分詞和索引,一般多用于標題和正文 41 //NOT_ANALYZED :表示不進行分詞。但進行索引。一般用于Id、身份證號碼、電話等精確查找的內容 42 //ANALYZED_NO_NORMS :表示進行分詞并索引,但不存儲Norms(包含了索引的權值信息)信息 43 //正常情況下,搜索列表是按照權值進行排序的。做的比較好的是Google 44 //NOT_ANALYZED_NO_NORMS :即不分詞也不存儲Norms信息 45 //No :不進行索引和分詞 46 47 //為文檔添加域(屬性) 48 String id = Integer.toString(ids[i]); 49 doc.add(new Field("id",id,Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)); 50 doc.add(new Field("title",titles[i],Field.Store.YES,Field.Index.NOT_ANALYZED)); 51 doc.add(new Field("author",authors[i],Field.Store.YES,Field.Index.NOT_ANALYZED)); 52 doc.add(new Field("content", contents[i],Field.Store.NO,Field.Index.ANALYZED)); 53 54 writer.addDocument(doc); 55 } 56 } catch (IOException e) { 57 e.printStackTrace(); 58 } 59 finally{ 60 if(writer != null) 61 try { 62 writer.close(); 63 } catch (CorruptIndexException e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } catch (IOException e) { 67 // TODO Auto-generated catch block 68 e.printStackTrace(); 69 } 70 } 71 }

?

搜索;

1 /** 2 * 搜索 3 */ 4 @Test 5 public void testSearch(){ 6 IndexReader reader =null; 7 try { 8 //1、創建Directory 9 Directory directory = FSDirectory.open(new File("E:\\lucene\\index2")); 10 11 //2、創建IndexReader 12 reader = IndexReader.open(directory); 13 14 //應用較多 15 System.out.println("索引文件數:" + reader.numDocs()); 16 System.out.println("最大文件數:" + reader.maxDoc()); 17 18 19 20 } catch (IOException e) { 21 // TODO Auto-generated catch block 22 e.printStackTrace(); 23 } 24 finally{ 25 if (reader != null) { 26 try { 27 reader.close(); 28 } catch (IOException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 } 32 } 33 } 34 }

?

【最佳實踐】

?

【文件類型】

1)?segment

表示一個完整的索引文件。搜索時通過該文件進行搜索。他是索引的重要文件。

?

2)?fnm

存儲了索引中所有Field的信息。

?

3)?fdxfdt

.fdx.fdt是綜合使用的兩類文件,其中.fdt類型文件用于存儲具有Store.YES屬性的Field數據。而.fdx類型文件則是一個索引,用于存儲Document在下面代碼就是創建索引的代碼。

?

4)?tiitis

.tis文件用于存儲分詞后的分詞(Term,相當于字典的頁),.tii就是它的所有文件(相當于字典的目錄),它標明了每個.tis文件中分詞的位置.

?

5)?frq

存儲了分詞在文中出現的頻率。

?

6)?prx

存儲了分詞在每次出現的位置。

?

7)?nrm

存儲文檔的標準引子。一般用該因子乘以命中次數。

?

8)?del

存儲刪除之后的索引信息。

注:文件不能隨意刪除,否則可能造成搜索失敗(出現錯誤)

?

轉載于:https://www.cnblogs.com/zhzcode/p/9800809.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的域选项的全部內容,希望文章能夠幫你解決所遇到的問題。

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