<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    搜索篇:lucene的簡單實例

    說明一下,這一篇文章的用到的lucene,是用2.0版本的,主要在查詢的時候2.0版本的lucene與以前的版本有了一些區別.
    其實這一些代碼都是早幾個月寫的,自己很懶,所以到今天才寫到自己的博客上,高深的文章自己寫不了,只能記錄下一些簡單的記錄與點滴,其中的代碼算是自娛自樂的,希望高手不要把重構之類的砸下來...

    1、在windows系統下的的C盤,建一個名叫s的文件夾,在該文件夾里面隨便建三個txt文件,隨便起名啦,就叫"1.txt","2.txt"和"3.txt"啦
    其中1.txt的內容如下:

    代碼
    1. 中華人民共和國 ??
    2. 全國人民 ??
    3. 2006 年??

    而"2.txt"和"3.txt"的內容也可以隨便寫幾寫,這里懶寫,就復制一個和1.txt文件的內容一樣吧

    2、下載lucene包,放在classpath路徑中
    建立索引:

    代碼
    1. package?lighter.javaeye.com; ??
    2. ??
    3. import?java.io.BufferedReader; ??
    4. import?java.io.File; ??
    5. import?java.io.FileInputStream; ??
    6. import?java.io.IOException; ??
    7. import?java.io.InputStreamReader; ??
    8. import?java.util.Date; ??
    9. ??
    10. import?org.apache.lucene.analysis.Analyzer; ??
    11. import?org.apache.lucene.analysis.standard.StandardAnalyzer; ??
    12. import?org.apache.lucene.document.Document; ??
    13. import?org.apache.lucene.document.Field; ??
    14. import?org.apache.lucene.index.IndexWriter; ??
    15. ??
    16. /** ?
    17. ?*?author?lighter?date?2006-8-7 ?
    18. ?*/??
    19. public?class?TextFileIndexer?{ ??
    20. ????public?static?void?main(String[]?args)?throws?Exception?{ ??
    21. ????????/*?指明要索引文件夾的位置,這里是C盤的S文件夾下?*/??
    22. ????????File?fileDir?=?new?File("c:\\s"); ??
    23. ??
    24. ????????/*?這里放索引文件的位置?*/??
    25. ????????File?indexDir?=?new?File("c:\\index"); ??
    26. ????????Analyzer?luceneAnalyzer?=?new?StandardAnalyzer(); ??
    27. ????????IndexWriter?indexWriter?=?new?IndexWriter(indexDir,?luceneAnalyzer, ??
    28. ????????????????true); ??
    29. ????????File[]?textFiles?=?fileDir.listFiles(); ??
    30. ????????long?startTime?=?new?Date().getTime(); ??
    31. ???????? ??
    32. ????????//增加document到索引去 ??
    33. ????????for?(int?i?=?0;?i?<?textFiles.length;?i++)?{ ??
    34. ????????????if?(textFiles[i].isFile() ??
    35. ????????????????????&&?textFiles[i].getName().endsWith(".txt"))?{ ??
    36. ????????????????System.out.println("File?"?+?textFiles[i].getCanonicalPath() ??
    37. ????????????????????????+?"正在被索引...."); ??
    38. ????????????????String?temp?=?FileReaderAll(textFiles[i].getCanonicalPath(), ??
    39. ????????????????????????"GBK"); ??
    40. ????????????????System.out.println(temp); ??
    41. ????????????????Document?document?=?new?Document(); ??
    42. ????????????????Field?FieldPath?=?new?Field("path",?textFiles[i].getPath(), ??
    43. ????????????????????????Field.Store.YES,?Field.Index.NO); ??
    44. ????????????????Field?FieldBody?=?new?Field("body",?temp,?Field.Store.YES, ??
    45. ????????????????????????Field.Index.TOKENIZED, ??
    46. ????????????????????????Field.TermVector.WITH_POSITIONS_OFFSETS); ??
    47. ????????????????document.add(FieldPath); ??
    48. ????????????????document.add(FieldBody); ??
    49. ????????????????indexWriter.addDocument(document); ??
    50. ????????????} ??
    51. ????????} ??
    52. ????????//optimize()方法是對索引進行優化 ??
    53. ????????indexWriter.optimize(); ??
    54. ????????indexWriter.close(); ??
    55. ???????? ??
    56. ????????//測試一下索引的時間 ??
    57. ????????long?endTime?=?new?Date().getTime(); ??
    58. ????????System.out ??
    59. ????????????????.println("這花費了"??
    60. ????????????????????????+?(endTime?-?startTime) ??
    61. ????????????????????????+?"?毫秒來把文檔增加到索引里面去!"??
    62. ????????????????????????+?fileDir.getPath()); ??
    63. ????} ??
    64. ??
    65. ????public?static?String?FileReaderAll(String?FileName,?String?charset) ??
    66. ????????????throws?IOException?{ ??
    67. ????????BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader( ??
    68. ????????????????new?FileInputStream(FileName),?charset)); ??
    69. ????????String?line?=?new?String(); ??
    70. ????????String?temp?=?new?String(); ??
    71. ???????? ??
    72. ????????while?((line?=?reader.readLine())?!=?null)?{ ??
    73. ????????????temp?+=?line; ??
    74. ????????} ??
    75. ????????reader.close(); ??
    76. ????????return?temp; ??
    77. ????} ??
    78. }??

    索引的結果:

    代碼
    1. File?C:\s\1.txt正在被索引.... ??
    2. 中華人民共和國全國人民2006年 ??
    3. File?C:\s\2.txt正在被索引.... ??
    4. 中華人民共和國全國人民2006年 ??
    5. File?C:\s\3.txt正在被索引.... ??
    6. 中華人民共和國全國人民2006年 ??
    7. 這花費了297?毫秒來把文檔增加到索引里面去!c:\s??

    3、建立了索引之后,查詢啦....

    代碼
    1. package?lighter.javaeye.com; ??
    2. ??
    3. import?java.io.IOException; ??
    4. ??
    5. import?org.apache.lucene.analysis.Analyzer; ??
    6. import?org.apache.lucene.analysis.standard.StandardAnalyzer; ??
    7. import?org.apache.lucene.queryParser.ParseException; ??
    8. import?org.apache.lucene.queryParser.QueryParser; ??
    9. import?org.apache.lucene.search.Hits; ??
    10. import?org.apache.lucene.search.IndexSearcher; ??
    11. import?org.apache.lucene.search.Query; ??
    12. ??
    13. public?class?TestQuery?{ ??
    14. ????public?static?void?main(String[]?args)?throws?IOException,?ParseException?{ ??
    15. ????????Hits?hits?=?null; ??
    16. ????????String?queryString?=?"中華"; ??
    17. ????????Query?query?=?null; ??
    18. ????????IndexSearcher?searcher?=?new?IndexSearcher("c:\\index"); ??
    19. ??
    20. ????????Analyzer?analyzer?=?new?StandardAnalyzer(); ??
    21. ????????try?{ ??
    22. ????????????QueryParser?qp?=?new?QueryParser("body",?analyzer); ??
    23. ????????????query?=?qp.parse(queryString); ??
    24. ????????}?catch?(ParseException?e)?{ ??
    25. ????????} ??
    26. ????????if?(searcher?!=?null)?{ ??
    27. ????????????hits?=?searcher.search(query); ??
    28. ????????????if?(hits.length()?>?0)?{ ??
    29. ????????????????System.out.println("找到:"?+?hits.length()?+?"?個結果!"); ??
    30. ????????????} ??
    31. ????????} ??
    32. ????} ??
    33. ??
    34. }??

    其運行結果:

    引用
    找到:3 個結果!

    具體的API的用法,這里就不說了,具體的做法參考lucene的官方文檔吧...
    下一篇文章:
    搜索篇:lucene的簡單實例<二> http://www.javaeye.com/post/190576

    posted on 2006-12-23 10:16 都市淘沙者 閱讀(210) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

    主站蜘蛛池模板: 亚洲精品国精品久久99热| 日本黄色免费观看| 亚洲AV无码乱码在线观看富二代| 亚洲av无码专区在线观看下载| 中文字幕亚洲第一在线| 丝瓜app免费下载网址进入ios| 97无码免费人妻超级碰碰夜夜| 亚洲最新在线视频| fc2成年免费共享视频18| 亚洲中文字幕无码爆乳av中文| 中文字幕亚洲综合精品一区| 99视频在线精品免费| 波多野结衣免费视频观看| 麻豆69堂免费视频| 亚洲国产精品成人| a毛片在线免费观看| 亚洲视频在线免费观看| 青草青草视频2免费观看| 亚洲精品无码av天堂| 亚洲免费观看视频| 久久亚洲精品成人无码网站| 黄色片在线免费观看| 亚洲av无码专区在线电影天堂| 免费在线观看a级毛片| 在线观看免费无码视频| 色噜噜综合亚洲av中文无码| 一个人看的www免费在线视频| 亚洲午夜福利AV一区二区无码| 亚洲a∨无码一区二区| 亚洲综合亚洲综合网成人| 永久免费AV无码网站国产| 亚洲精品国产啊女成拍色拍| 99久久免费国产特黄| 亚洲午夜精品一区二区公牛电影院| 成人黄动漫画免费网站视频| jizz免费在线观看| 亚洲另类精品xxxx人妖| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 日本高清高色视频免费| 亚洲美女在线国产| 亚洲精品免费在线观看|