一.全文检索
1.非结构化数据:这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)
2.应用场景:
对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度、Google等搜索引擎、论坛站内搜索、电商网站站内搜索等。
3.流程:
二.程序实现:
1.创建索引:
*环境:Lucene
第一步:创建一个java工程,并导入jar包。
第二步:创建一个indexwriter对象。
1)指定索引库的存放位置Directory对象
2)指定一个IndexWriterConfig对象。
第二步:创建document对象。
第三步:创建field对象,将field添加到document对象中。
第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。
第五步:关闭IndexWriter对象。
2.使用Luke工具查看索引文件
*Luke必须使用java-9来使用:M:\java\luke-7.4.0\target
3.查询索引库
第一步:创建一个Directory对象,也就是索引库存放的位置。
第二步:创建一个indexReader对象,需要指定Directory对象。
第三步:创建一个indexsearcher对象,需要指定IndexReader对象
第四步:创建一个TermQuery对象,指定查询的域和查询的关键词。
第五步:执行查询。
第六步:返回查询结果。遍历查询结果并输出。
第七步:关闭IndexReader对象
三.中文分析器
*将一句话分词
1.默认分析器:
StandardAnalyzer
*处理中文就是一个字一个字分离
2.中文分析器:
SmartChineseAnalyzer:多词分离,支持度差
IKAnalyzer:支持度高
使用方法:
第一步:把jar包添加到工程中
第二步:把配置文件和扩展词典和停用词词典添加到classpath下
注意:hotword.dic和ext_stopword.dic文件的格式为UTF-8,注意是无BOM 的UTF-8 编码。
也就是说禁止使用windows记事本编辑扩展词典文件
*使用EditPlus编辑
*stopword:敏感词,无意义词
*hotword:添加新词
四.索引库的维护
五.ElasticSearch
*基于lucene开发的去哪问检索服务器
*lucene是一个API