lucene学习--分词和高亮显示

MODIS 遥感数据批量下载(使用Cygwin) MODIS 遥感数据批量下载(使用Cygwin)包含Cygwin的下载教程 阅读详情

首先在E:\TestLucene\workspaceSE路径下,建立文件夹indexdocs和3个txt文件:L1.txt,L2.txt,L3.txt.

L1.txt内容:

111111111111111111111111111111111111111111111111111111111111111111111111111
信息检索就是从信息集合中找出与用户需求相关的信息。
被检索的信息除了文本外,还有图像、音频、视频等多媒体信息,这里我们主要来说说文本信息的检索。
全文检索:把用户的查询请求和全文中的每一词进行比较,不考虑查询请求与文本语义上的匹配,
在信息检索工具中,全文检索是最具通用性和实用性的。(通俗的讲就是匹配关键字的)

数据检索:查询要求和信息系统中的数据都遵循一定的格式,具有一定的结构,
允许对特定的字段检索,其性能与使用有很大的局限性,并且支持语义匹配。

知识检索:强调的是基于知识的、语义的匹配(最复杂的,它就相当于我们知道了搜索问题的答案,
再直接去搜答案的信息)。

全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,
指明该词在文章中出现的次数和位置,当用户查询的时候,检索程序就根据事先建立好的索引进行查找,并将查找的结果反馈给用户的检索方式。

数据检索查询要求和信息系统中的数据都遵循一定的格式,具有一定的结构,允许对特定的字段检索。
例如,数据均按“时间、人物、地点、事件”的形式存储,查询可以为:地点=“北京”。数据检索的性能取决于所使用的标识字段的方法和用户对这种方法的理解,因此具有很大的局限性。

 

L2.txt内容:

 

2222222222222222222222222222222222222222222222222222222222222222222222222
说明:在Internet上采集信息的软件被称为爬虫或蜘蛛或网络机器人(搜索引擎外围的东西),
爬虫在Internet上访问每一个网页,每访问一个网页就把其中的内容传回本地服务器。
信息加工的最主要的任务就是为采集到本地的信息编排索引,为查询做好准备。
分词器的作用:分词器,对文本资源进行切分,将文本按规则切分成一个个进行索引的最小单位(关键词)

 


L3.txt内容:


333333333333333333333333333333333333333333333333333333333333333333333333
中文分词:中文的分词比较复杂,因为不是一个字就是一个词,
而且一个词在另外一个地方可能不是一个词,如在“帽子和服装”中,
“和服”就不是一个词,对于中文分词,通常有三种方式:单字分词、二分法分词、词典分词
单字分词:就是按照中文一个字一个字的分词
二分法分词:按两个字进行切分
词典分词:按某种算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语,

 

准备工作完成了,现在看代码:

 

File2Document.java

 

[html]  view plain copy
  1. package lucene.study;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileNotFoundException;  
  7. import java.io.IOException;  
  8. import java.io.InputStreamReader;  
  9. import java.io.UnsupportedEncodingException;  
  10.   
  11. import org.apache.lucene.document.Document;  
  12. import org.apache.lucene.document.Field;  
  13. import org.apache.lucene.document.Field.Index;  
  14. import org.apache.lucene.document.Field.Store;  
  15.   
  16. /**  
  17.  * @author xudongwang 2012-2-2  
  18.  *   
  19.  *         Email:xdwangiflytek@gmail.com  
  20.  */  
  21. public class File2Document {  
  22.     /**  
  23.      * File--->Document  
  24.      *   
  25.      * @param filePath  
  26.      *            File路径  
  27.      *   
  28.      * @return Document对象  
  29.      */  
  30.     public static Document file2Document(String filePath) {  
  31.         // 文件要存放:name,content,size,path  
  32.         File file = new File(filePath);  
  33.         Document document = new Document();  
  34.         // Store.YES 是否存储 yes no compress(压缩之后再存)  
  35.         // Index 是否进行索引 Index.ANALYZED 分词后进行索引,NOT_ANALYZED 不索引,NOT_ANALYZED  
  36.         // 不分词直接索引  
  37.         document.add(new Field("name", file.getName(), Field.Store.YES,  
  38.                 Field.Index.ANALYZED));  
  39.         document.add(new Field("content", readFileContent(file), Field.Store.YES,  
  40.                 Field.Index.ANALYZED));  
  41.         document.add(new Field("size", String.valueOf(file.length()),  
  42.                 Field.Store.YES, Field.Index.NOT_ANALYZED));// 不分词,但是有时需要索引,文件大小(int)转换成String  
  43.         document.add(new Field("path", file.getAbsolutePath(), Field.Store.YES,  
  44.                 Field.Index.NOT_ANALYZED));// 不需要根据文件的路径来查询  
  45.         return document;  
  46.     }  
  47.   
  48.     /**  
  49.      * 49. * 读取文件内容 50. * 51. * @param file 52. * File对象 53. * @return File的内容  
  50.      * 54.  
  51.      */  
  52.     private static String readFileContent(File file) {  
  53.         try {  
  54.             BufferedReader reader = new BufferedReader(new InputStreamReader(  
  55.                     new FileInputStream(file)));  
  56.             StringBuffer content = new StringBuffer();  
  57.             try {  
  58.                 for (String line = null; (line = reader.readLine()) != null;) {  
  59.                     content.append(line).append("\n");  
  60.                 }  
  61.             } catch (IOException e) {  
  62.   
  63.                 e.printStackTrace();  
  64.             }  
  65. //          try {  
  66. //              byte temp[]=content.toString().getBytes("UTF-8");  
  67. //              String tt=new String(temp,"gb2312");  
  68. //              System.out.println(tt);  
  69. //          } catch (UnsupportedEncodingException e) {  
  70. //              e.printStackTrace();  
  71. //          }  
  72.               
  73.               
  74.             return content.toString();  
  75.         } catch (FileNotFoundException e) {  
  76.   
  77.             e.printStackTrace();  
  78.         }  
  79.         return null;  
  80.     }  
  81.   
  82.     /**  
  83.      * <pre>  
  84.      * 获取name属性值的两种方法      
  85.      * 1.Filed field = document.getFiled("name");      
  86.      *         field.stringValue();      
  87.      * 2.document.get("name");  
  88.      * </pre>  
  89.      *   
  90.      * @param document  
  91.      */  
  92.     public static void printDocumentInfo(Document document) {  
  93.         // TODO Auto-generated method stub  
  94.         System.out.println("索引name -->" + document.get("name"));  
  95.         //System.out.println("content -->" + document.get("content"));  
  96.         System.out.println("索引path -->" + document.get("path"));  
  97.         System.out.println("索引size -->" + document.get("size"));  
  98.     }  
  99. }  


AnalyzerDemo.java

 

[html]  view plain copy
  1. package lucene.study;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.StringReader;  
  5.   
  6. import org.apache.lucene.analysis.Analyzer;  
  7. import org.apache.lucene.analysis.SimpleAnalyzer;  
  8. import org.apache.lucene.analysis.TokenStream;  
  9. import org.apache.lucene.analysis.cjk.CJKAnalyzer;  
  10. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  11. import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;  
  12. import org.apache.lucene.analysis.tokenattributes.TypeAttribute;  
  13. import org.apache.lucene.util.Version;  
  14.   
  15. public class AnalyzerDemo {  
  16.   
  17.     public void analyze(Analyzer analyzer, String text) {  
  18.   
  19.         System.out.println("-----------分词器:" + analyzer.getClass());  
  20.         TokenStream tokenStream = analyzer.tokenStream("content",  
  21.                 new StringReader(text));  
  22.   
  23.         CharTermAttribute termAtt = (CharTermAttribute) tokenStream  
  24.                 .getAttribute(CharTermAttribute.class);  
  25.           
  26. //      TypeAttribute typeAtt = (TypeAttribute) tokenStream.getAttribute(TypeAttribute.class);  
  27.   
  28.         try {  
  29.             while (tokenStream.incrementToken()) {  
  30.                 System.out.println(termAtt.toString());  
  31. //              System.out.println(typeAtt.type());  
  32.             }  
  33.         } catch (IOException e) {  
  34.             e.printStackTrace();  
  35.         }  
  36.   
  37.     }  
  38.       
  39.     public static void main(String[] dd){  
  40.         AnalyzerDemo  demo=new AnalyzerDemo();  
  41.         System.out.println("---------------测试英文");  
  42.         String enText = "Hello, my name is suolong, my 优快云 blog address is http://blog.youkuaiyun.com/lushuaiyin";     
  43.         System.out.println(enText);     
  44.           
  45.           
  46.         System.out.println("By StandardAnalyzer 方式分词:");     
  47.         Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);     
  48.         demo.analyze(analyzer, enText);  
  49.           
  50.         System.out.println("By SimpleAnalyzer 方式分词:");     
  51.         Analyzer analyzer2 = new SimpleAnalyzer(Version.LUCENE_35);     
  52.         demo.analyze(analyzer2, enText);  
  53.           
  54.         System.out.println("通过上面的结果发现StandardAnalyzer分词器不会按.来区分的,而SimpleAnalyzer是按.来区分的");     
  55.         System.out.println();  
  56.           
  57.           
  58.           
  59.         System.out.println("---------------->测试中文");     
  60.         String znText = "感谢原作王旭东";     
  61.         System.out.println(znText);     
  62.         System.out.println("By StandardAnalyzer 方式分词:");     
  63.         // 通过结果发现它是将每个字都作为一个关键字,这样的话效率肯定很低咯     
  64.         demo.analyze(analyzer, znText);     
  65.         System.out.println("By CJKAnalyzer 方式(二分法分词)分词:");     
  66.         Analyzer analyzer3 = new CJKAnalyzer(Version.LUCENE_35);     
  67.         demo.analyze(analyzer3, znText);  
  68.           
  69.           
  70.     }  
  71.   
  72. }  


控制台打印:

 

[html]  view plain copy
  1. ---------------测试英文  
  2. Hello, my name is suolong, my 优快云 blog address is http://blog.youkuaiyun.com/lushuaiyin  
  3. By StandardAnalyzer 方式分词:  
  4. -----------分词器:class org.apache.lucene.analysis.standard.StandardAnalyzer  
  5. hello  
  6. my  
  7. name  
  8. suolong  
  9. my  
  10. csdn  
  11. blog  
  12. address  
  13. http  
  14. blog.youkuaiyun.com  
  15. lushuaiyin  
  16. By SimpleAnalyzer 方式分词:  
  17. -----------分词器:class org.apache.lucene.analysis.SimpleAnalyzer  
  18. hello  
  19. my  
  20. name  
  21. is  
  22. suolong  
  23. my  
  24. csdn  
  25. blog  
  26. address  
  27. is  
  28. http  
  29. blog  
  30. csdn  
  31. net  
  32. lushuaiyin  
  33. 通过上面的结果发现StandardAnalyzer分词器不会按.来区分的,而SimpleAnalyzer是按.来区分的  
  34.   
  35. ---------------->测试中文  
  36. 感谢原作王旭东  
  37. By StandardAnalyzer 方式分词:  
  38. -----------分词器:class org.apache.lucene.analysis.standard.StandardAnalyzer  
  39. 感  
  40. 谢  
  41. 原  
  42. 作  
  43. 王  
  44. 旭  
  45. 东  
  46. By CJKAnalyzer 方式(二分法分词)分词:  
  47. -----------分词器:class org.apache.lucene.analysis.cjk.CJKAnalyzer  
  48. 感谢  
  49. 谢原  
  50. 原作  
  51. 作王  
  52. 王旭  
  53. 旭东  


 

高亮显示例子

HighLighterDemo.java

 

[html]  view plain copy
  1. package lucene.study;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.apache.lucene.analysis.Analyzer;  
  6. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  7. import org.apache.lucene.document.Document;  
  8. import org.apache.lucene.index.IndexReader;  
  9. import org.apache.lucene.index.IndexWriter;  
  10. import org.apache.lucene.index.IndexWriterConfig;  
  11. import org.apache.lucene.index.IndexWriterConfig.OpenMode;  
  12. import org.apache.lucene.queryParser.MultiFieldQueryParser;  
  13. import org.apache.lucene.queryParser.QueryParser;  
  14. import org.apache.lucene.search.Filter;  
  15. import org.apache.lucene.search.IndexSearcher;  
  16. import org.apache.lucene.search.Query;  
  17. import org.apache.lucene.search.ScoreDoc;  
  18. import org.apache.lucene.search.TopDocs;  
  19. import org.apache.lucene.search.highlight.Formatter;  
  20. import org.apache.lucene.search.highlight.Fragmenter;  
  21. import org.apache.lucene.search.highlight.Highlighter;  
  22. import org.apache.lucene.search.highlight.QueryScorer;  
  23. import org.apache.lucene.search.highlight.Scorer;  
  24. import org.apache.lucene.search.highlight.SimpleFragmenter;  
  25. import org.apache.lucene.search.highlight.SimpleHTMLFormatter;  
  26. import org.apache.lucene.store.Directory;  
  27. import org.apache.lucene.store.FSDirectory;  
  28. import org.apache.lucene.util.Version;  
  29.   
  30. public class HighLighterDemo {  
  31.   
  32.     /**  
  33.      * 源文件路径  
  34.      */  
  35.     private String filePath01 = "E:\\TestLucene\\workspaceSE\\L1.txt";  
  36.     private String filePath02 = "E:\\TestLucene\\workspaceSE\\L2.txt";  
  37.     private String filePath03 = "E:\\TestLucene\\workspaceSE\\L3.txt";  
  38.   
  39.     /**  
  40.      * 索引路径  
  41.      */  
  42.     private String indexPath = "E:\\TestLucene\\workspaceSE\\indexdocs";  
  43.   
  44.     /**  
  45.      * 分词器,这里我们使用默认的分词器,标准分析器(好几个,但对中文的支持都不好)  
  46.      */  
  47.     private Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);  
  48.   
  49.     /**  
  50.      * 创建索引  
  51.      *   
  52.      * @throws Exception  
  53.      */  
  54.     public void createIndex() throws Exception {  
  55.   
  56.         File indexFile = new File(indexPath);  
  57.         Directory directory = FSDirectory.open(indexFile);  
  58.   
  59.         // 写入器配置需要2个参数,版本,分词器。还有其他参数,这里就不再讲了。  
  60.         IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_35,  
  61.                 analyzer);  
  62.         conf.setOpenMode(OpenMode.CREATE);  
  63.   
  64.         // IndexWriter索引写入器是用来操作(增、删、改)索引库的  
  65.         IndexWriter indexWriter = new IndexWriter(directory, conf);// 需要两个参数,目录,写入器配置  
  66.   
  67.         // 文档,即要进行索引的单元  
  68.         Document doc01 = File2Document.file2Document(filePath01);  
  69.         Document doc02 = File2Document.file2Document(filePath02);  
  70.         Document doc03 = File2Document.file2Document(filePath03);  
  71.   
  72.         // 将Document添加到索引库中  
  73.         indexWriter.addDocument(doc01);  
  74.         indexWriter.addDocument(doc02);  
  75.         indexWriter.addDocument(doc03);  
  76.   
  77.         indexWriter.close();// 关闭写入器,释放资源,索引创建完毕  
  78.     }  
  79.   
  80.     /**  
  81.      * 搜索  
  82.      *   
  83.      * @param queryStr  
  84.      *            搜索的关键词  
  85.      * @throws Exception  
  86.      */  
  87.     public void search(String queryStr) throws Exception {  
  88.   
  89.         // 1、把要搜索的文本解析为Query对象  
  90.         // 指定在哪些字段查询  
  91.         String[] fields = { "name", "content" };  
  92.         // QueryParser: 是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。  
  93.         QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_35,  
  94.                 fields, analyzer);  
  95.         // Query:查询,lucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些类。  
  96.         Query query = queryParser.parse(queryStr);  
  97.   
  98.         // 2、进行查询  
  99.         File indexFile = new File(indexPath);  
  100.   
  101.         // IndexSearcher 是用来在索引库中进行查询的  
  102.         Directory directory = FSDirectory.open(indexFile);  
  103.         IndexReader indexReader = IndexReader.open(directory);  
  104.         IndexSearcher indexSearcher = new IndexSearcher(indexReader);  
  105.         // Filter 过滤器,我们可以将查出来的结果进行过滤,可以屏蔽掉一些不想给用户看到的内容  
  106.         Filter filter = null;  
  107.         // 10000表示一次性在数据库中查询多少个文档  
  108.         // topDocs 类似集合  
  109.         TopDocs topDocs = indexSearcher.search(query, filter, 10000);  
  110.         System.out.println("总共有【" + topDocs.totalHits + "】个文档含有匹配\"" + queryStr  
  111.                 + "\"的结果");  
  112.         // 注意这里的匹配结果是指文档的个数,而不是文档中包含搜索结果的个数  
  113.   
  114.           
  115.           
  116.           
  117.         // 准备高亮器  
  118.         Formatter formatter = new SimpleHTMLFormatter("<font color='red'>",  
  119.                 "</font>");  
  120.         Scorer scorer = new QueryScorer(query);  
  121.         Highlighter highlighter = new Highlighter(formatter, scorer);  
  122.   
  123.         Fragmenter fragmenter = new SimpleFragmenter(100);// 指定100个字符  
  124.         highlighter.setTextFragmenter(fragmenter);// 决定是否生成摘要,以及摘要有多长  
  125.   
  126.         // 3、打印结果  
  127.         for (ScoreDoc scoreDoc : topDocs.scoreDocs) {  
  128.             int docSn = scoreDoc.doc;// 文档内部编号  
  129.             Document document = indexSearcher.doc(docSn);// 根据文档编号取出相应的文档  
  130.   
  131.             // 进行高亮处理  
  132.             // 返回高亮后的结果,如果当前属性值中没有出现关键字,会返回null  
  133.             String highlighterStr = highlighter.getBestFragment(analyzer,  
  134.                     "content", document.get("content"));  
  135.   
  136.             if (highlighterStr == null) {  
  137.                 String content = document.get("content");  
  138.                 int endIndex = Math.min(20, content.length());  
  139.                 highlighterStr = content.substring(0, endIndex);// 最多前20个字符  
  140.             }  
  141.             System.out.println("-------处理后的高亮内容------start------------");  
  142.             System.out.println(highlighterStr);  
  143.             System.out.println("-------处理后的高亮内容------end------------");  
  144.             document.getField("content").setValue(highlighterStr);  
  145.   
  146.             //File2Document.printDocumentInfo(document);// 打印出文档信息  
  147.         }  
  148.     }  
  149.   
  150.     public static void main(String[] args) throws Exception {  
  151.   
  152.         HighLighterDemo highLighterDemo = new HighLighterDemo();  
  153.         highLighterDemo.createIndex();// 创建索引  
  154.         // lucene.createRamIndex();//创建内存索引  
  155.   
  156.         highLighterDemo.search("分词");// 搜索你想找的文字  
  157.         System.out.println("--------------------------------------------------------------------");  
  158.         highLighterDemo.search("检索");  
  159.         System.out.println("--------------------------------------------------------------------");  
  160.         highLighterDemo.search("索引");  
  161.         System.out.println("--------------------------------------------------------------------");  
  162.     }  
  163.   
  164. }  


控制台打印:

 

[html]  view plain copy
  1. 总共有【3】个文档含有匹配"分词"的结果  
  2. -------处理后的高亮内容------start------------  
  3. 333333333333333333333333333333333333333333333333333333333333333333333333  
  4. 中文<font color='red'>分</font><font color='red'>词</font>:中文的<font color='red'>分</font><font color='red'>词</font>比较复杂,因为不是一个字就是一个  
  5. -------处理后的高亮内容------end------------  
  6. -------处理后的高亮内容------start------------  
  7. 。  
  8. <font color='red'>分</font><font color='red'>词</font>器的作用:<font color='red'>分</font><font color='red'>词</font>器,对文本资源进行切<font color='red'>分</font>,将文本按规则切<font color='red'>分</font>成一个个进行索引的最小单位(关键<font color='red'>词</font>)  
  9.   
  10. -------处理后的高亮内容------end------------  
  11. -------处理后的高亮内容------start------------  
  12. 息。  
  13. 被检索的信息除了文本外,还有图像、音频、视频等多媒体信息,这里我们主要来说说文本信息的检索。  
  14. 全文检索:把用户的查询请求和全文中的每一<font color='red'>词</font>进行比较,不考虑查询请求与文本语义上的匹配,  
  15. 在信息检索工  
  16. -------处理后的高亮内容------end------------  
  17. --------------------------------------------------------------------  
  18. 总共有【2】个文档含有匹配"检索"的结果  
  19. -------处理后的高亮内容------start------------  
  20. 111111111111111111111111111111111111111111111111111111111111111111111111111  
  21. 信息<font color='red'>检</font><font color='red'>索</font>就是从信息集合中找出与用户需求相关的信  
  22. -------处理后的高亮内容------end------------  
  23. -------处理后的高亮内容------start------------  
  24. 或蜘蛛或网络机器人(搜<font color='red'>索</font>引擎外围的东西),  
  25. 爬虫在Internet上访问每一个网页,每访问一个网页就把其中的内容传回本地服务器。  
  26. 信息加工的最主要的任务就是为采集到本地的信息编排<font color='red'>索</font>引,为查询做好准备  
  27. -------处理后的高亮内容------end------------  
  28. --------------------------------------------------------------------  
  29. 总共有【2】个文档含有匹配"索引"的结果  
  30. -------处理后的高亮内容------start------------  
  31. 或蜘蛛或网络机器人(搜<font color='red'>索</font><font color='red'>引</font>擎外围的东西),  
  32. 爬虫在Internet上访问每一个网页,每访问一个网页就把其中的内容传回本地服务器。  
  33. 信息加工的最主要的任务就是为采集到本地的信息编排<font color='red'>索</font><font color='red'>引</font>,为查询做好准备  
  34. -------处理后的高亮内容------end------------  
  35. -------处理后的高亮内容------start------------  
  36. 语义匹配。  
  37.   
  38. 知识检<font color='red'>索</font>:强调的是基于知识的、语义的匹配(最复杂的,它就相当于我们知道了搜<font color='red'>索</font>问题的答案,  
  39. 再直接去搜答案的信息)。  
  40.   
  41. 全文检<font color='red'>索</font>是指计算机<font color='red'>索</font><font color='red'>引</font>程序通过扫描文章中的每一个词,对每一个词建立一  
  42. -------处理后的高亮内容------end------------  
  43. --------------------------------------------------------------------  


 我把控制台打印的内容放到一个HTML网页中,看看效果:

STM32CubeMX Nucleo F767ZI 教程(1) 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 官网上买了个NUCLEO F767ZI 的开发板,144引脚的芯片,https://www.st.com/content/st_com/zh/products/evaluation-tools/prod 阅读详情

相关推荐

逆向工程视角:MFI芯片通信协议在Linux环境下的行为分析

本文从逆向工程角度深入分析了MFI芯片在Linux环境下的通信协议行为,重点探讨了树莓派与MFI芯片通过I2C接口交互的技术细节。文章详细介绍了信号捕获、协议栈逆向、动态调试技巧以及安全机制分析,为开发者提供了在Linux驱动层面实现MFI认证的实用方法。

time3的博客 178

lucene全文搜索 高亮显示 实现步骤(doc.add(new StringField()、writer.addDocument(doc)、IndexSearcher、QueryParser )

搜索效果截图: 新增一条记录时,除了数据库表数据的更新,还要额外添加索引文件: 然后再查询时,就根据上面的所以来查: 一、引入依赖 <!-- 添加lucene支持 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core<...

可控的事情要谨慎,不可控的事情要乐观。 470

HP iLO4报错自救指南:Embedded Flash/SD-CARD故障的3种修复方案(附详细截图)

本文详细解析了HP iLO4出现'Embedded Flash/SD-CARD'故障时的3种修复方案,包括快速恢复、固件级修复和硬件级解决方案。通过Diagnostics诊断和Self-Test报告,帮助运维人员高效解决问题,并提供预防性维护建议,确保服务器远程管理功能的稳定性。

weixin_42522953的博客 514

Lucene高亮显示详解

在Lucene的org.apache.lucene.search.highlight包中提供了关于高亮显示检索关键字的工具。使用百度、 Google搜索的时候,检索结果显示的时候,在摘要中实现与关键字相同的词条进行高亮显示,百度和Google指定红色高亮显示。 有了Lucene提供的高亮显示的工具,可以很方便地实现高亮显示的功能。 高亮显示,就是根据用户输入的检索关键字,检索找到该

jazywoo_在路上 1560

使用Qt Creator调用eBUS SDK

在新界面,勾选左下角“ Show unreachable Network Devices",可以看到没有成功连接的网络相机,原因是IP地址配置错误。每个版本的OpenCV的依赖项的名字都不同,我这里是opencv_world490.lib与opencv_world490d.lib。函数,可以看到在这里是图像缓存区,能够对捕获的图像进行一些操作。在Visual Studio打开项目属性,在VC++目录这里,把Opencv的路径添加进去。这时,会自动跳转到mainwindow.cpp,生成该按钮对应的槽函数。

qq_35685051的博客 1289

STM32F103C8T6板子使用说明

pcb版,把众多元器件集中到一个板子上面管理。

LYC_462857656的博客 2194

lucene4下用MultiFieldQueryParser同时搜索多个field时

因为工作中突然要用到lucene,就到官网上下了lucene4.7的jar包和文档,回头开始学习的时候才发现,网上lucene相关的资料大部分都停留在3.*阶段,于是结合前辈的代码,自己写了下面一个例子,该例子可以实现对mysql数据库中单个表的索引和多字段同时搜索以及按各个字段设定的权重对结...

chunli5093的博客 600

IEC104协议学习专栏内容规划

IEC104协议的编程学习

sixtome 1110

Lucene全文检索框架+Solr+ElasticSearch搜索引擎(Java高级必备.ES)

课程提供所有代码笔记素材以及答疑 1、Lucene框架的熟练应用实现类似百度、京东商城等应用的全文检索效果; 1、Solr简介 2、Solr下载安装以及目录结构介绍 3、Solr应用部署至Tomcat服务器 4、Solr后台管理界面介绍 5、通过managed-schema配置Field以及中文分词器 6、将数据库中的数据导入至Solr索引库 7、通过Solr后台管理界面对索引进行CRUD高亮过滤排序分页 8、通过Solrj实现索引的添加更新 9、通过Solrj实现索引的删除 10、索引的检索_过滤_高亮等操作 11、项目实战应用 12、Solr知识点总结 1、熟练掌握Lucene框架的使用,实现类似百度、京东商城等应用的全文检索效果; 2、ElasticSearch下载安装(window以及linux下安装) 3、集群环境搭建 4、客户端Kibana安装与使用 5、集群管理插件head安装使用 6、java api 操作 ES 7、电商项目实战应用等等 .....

《嵌入式-STM32开发指南》第三部分 外设篇 - 第2章 温度传感器DS18B20

2.1 理论分析 2.1.1概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将环境温度转换为数字信号,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。另外,以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量

不问归期的博客 8305

观测器选择与工程实践建议

摘要:永磁同步电机(PMSM)无传感器控制中,观测器选型需综合考虑应用场景、性能需求与成本。消费级(家电、工具)推荐滑模观测器(SMO),成本低、鲁棒性强;工业级(伺服、泵阀)适用扩展卡尔曼滤波器(EKF),精度高但计算复杂;车规级(EPS、主驱动)需混合观测器(SMO+EKF),兼顾全速域性能与可靠性。低速时需高频注入法,IPMSM更适用。SMO易实现但存在抖振,EKF调试复杂。未来趋势是混合架构与AI增强,提升适应性与性能。选型需权衡速度范围、电机类型、处理器能力及成本。

汽车软件开发 146

java lucene 分词,Lucene分词与查询 | 学步园

package com.demo.ajax;public class Building{private Integer id;private String name;private String Information;public Integer getId(){return id;}public void setId(Integer id){this.id = id;}public Strin...

weixin_34430334的博客 363

Windows Docker Desktop部署MaxKB详细教程

MaxKB(Max Knowledge Base)是一款基于大语言模型(LLM)和检索增强生成(RAG)技术的开源知识库问答系统,旨在帮助企业、教育机构及研究组织高效管理知识并提供智能问答服务。

猿小白的博客 1376

LUCENE 3.6 学习笔记

序言:   目前,主流的全文索引工具有:Lucene , Sphinx , Solr , ElasticSearch。其中Solr和Elastic Search都是基于Lucene的。Sphinx不是 apache的项目,如果你想把Sphinx放到某个商业性的项目中,你就得买个商业许可证。   此文章为个人学习备忘之用,仅适合lucene的初学者参考阅读。至于lucene能做什么,自己百度

刺猬的专栏 7172

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

百度云盘 高级java架构师,Java架构师高级篇Lucene视频教程全

├01_lucenc简介和创建索引初步.avi├02_lucene简介和搜索初步.avi├03_lucene索引_创建_域选项.avi├04_lucene索引_的删除和更新.avi├05_lucene索引_加权操作和Luke的简单演示.avi├06_对日期和数字进行索引.avi├07_IndexReader的设计.avi├08_Directory的几种操作方式.avi├09_lucene的搜索_T...

weixin_36446407的博客 542

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Lucene 分词器学习

分词器:中文分词器和英文分词器 输入文本 -- 关键词切分--去除停用词【一些辅助词,不会对文章意思产生影响的词】这步可以加快建立索引的速度,减少索引文件--形态还原【比如:把时态去掉了】--转化为小写 private Analyzer analyzer = new StandardAnalyzer(); private Analyzer analyzer1=new SimpleA

lilp_ndsc的专栏 4005

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一步一步跟我学习lucene(11)---lucene搜索之高亮显示highlighter

highlighter介绍 这几天一直加班,博客有三天没有更新了,望见谅;我们在做查询的时候,希望对我们自己的搜索结果与搜索内容相近的地方进行着重显示,就如下面的效果 这里我们搜索的内容是“一步一步跟我学习lucene”,搜索引擎展示的结果中对用户的输入信息进行了配色方面的处理,这种区分正常文本和输入内容的效果即是高亮显示; 这样做的好处: 视觉上让人便于查找有搜索对应的文本块;界面展

wuyinggui的专栏 7213

【lucene学习】记录

【LuceneFileSearch】demo实践  学习了lucene 索引建立,更新,删除,以及多种查询方法,查询结果的高亮显示,以及IK分词的具体设置 tika包对ppt,pdf,xml等多种文档的自动识别于内容读取 简单的给小女花不弃.txt小说文本建立索引,并返回最高评词汇,解决了文档读取格式乱码问题,本来打算做个词云图的,但分词效果不尽理想,没深究了   【lucene】文档搜索...

liudongdong_jlu 424

lucene学习笔记

lucene学习笔记 思路 1. 首先搜集数据 数据可以是文件系统,数据库,网络上,手工输入的,或者像本例直接写在内存上的 2. 通过数据创建索引 3. 用户输入关键字 4. 通过关键字创建查询器 5. 根据查询器到索引里获取数据 6. 然后把查询结果展示在用户面前 ...

赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。 314

Lucene相关学习笔记

一.Lucene概述 LOGO: Lucene是一套用于全文检索和搜寻的开源程序库,由Apache软件基金会支持和提供 Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具 Lucene并不是现成的搜索引擎产品,但可以用来制作搜索引擎产品 官网:http://lucene.apache.org/ 1.1...

zxc_123_789的博客 379

lucene学习总结篇--lucene全文检索的基本原理和lucene API简单的使用

一、常用的jar包 先介绍一下常用的几个文件jar包。下面有maven pom.xml参考 lucene-core:其中包括了常用的文档,索引,搜索,存储等相关核心代码 lucene-analyzers-common:这里面包含了各种语言的词法分析器,用于对文件内容进行关键字切分,提取。 lucene-highlighter:这个jar包主要用于搜索出的内容高亮显示。

chen 4287

lucene4.7学习总结

花了一段时间学习lucene今天有时间把所学的写下来,网上有很多文章但大部分都是2.X和3.X版本的(当前最新版本4.9),希望这篇文章对自己和初学者有所帮助。 学习目录 (1)什么是lucene (2)lucene常用类详解 (3)lucene简单实例 (4)lucene常用分词器 (5)lucene多条件查询 (6)修改删除索引 (7)lucene优化、排...

dengtinghuan5005的博客 149

Lucene全文检索学习笔记

全文索引 介绍Lucene的作者:Lucene的贡献者Doug Cutting是 一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。原理lucene的检索算法属于索引检索,即用空间...

weixin_30591551的博客 146
上一篇: 在64位操作系统中重编译hadoop 2.2.0
下一篇: Mybatis Generator实现分页功能
Coder_Jiang
博客等级 码龄14年 28粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值