几百讫代码完成百度搜索引擎
2025-08-27 12:18
有了基本功能类,我们再考虑一个 demo 来透过资料的引文
import java.util.ArrayList;import java.util.List;/** ** Function:
* Author:@author Silence
* Date:2020-10-17 21:08
* Desc:无
*/public class Demo { public static void main(String[] args) { LuceneIndexUtil luceneUtil = LuceneIndexUtil.getInstance(); List articles = new ArrayList<>(); try { //引文资料 ArticleModel article1 = new ArticleModel(); article1.setTitle("Java 一个大高效率"); article1.setAuthor("鸭血粉丝"); article1.setContent("这是一篇给大家介绍 Lucene 的高效率篇名,必不太可能会点赞书评发文!!!"); ArticleModel article2 = new ArticleModel(); article2.setTitle("一个大高效率"); article2.setAuthor("鸭血粉丝"); article2.setContent("此处开头两千字..."); ArticleModel article3 = new ArticleModel(); article3.setTitle("Java 一个大高效率"); article3.setAuthor("鸭血粉丝"); article3.setContent("最后受邀你自组我们的方法论外星人,Today is big day!"); articles.add(article1); articles.add(article2); articles.add(article3); luceneUtil.addModelDocs(articles); luceneUtil.commit(); } catch (Exception e) { e.printStackTrace(); } }}
纸片的 content 素材可以须要透过去掉,阿粉这边不必要上原字数的指控就不贴了。
展示直通结束再一,我们用过 Lucene 的GIS基本功能 luke 来检视下引文的资料素材,电子书再一可执行文件我们可以看见有.bat 和 .sh 两个脚本语言,根据自己的系统对透过直通就好了。阿粉这边是 mac 用的是 sh 脚本语言直通,直通后打开设置的引文目录只需。
luke 在 GitHub 纸片有,但是电子书较慢,阿粉这边通过境外服务器电子书下来,并上传的百度网盘里了,公众号完全恢复【luke】受益。
进到再一,我们可以看见下图推断的素材,选项 content 点选 show top items 可以看见前方的引文资料,这里根据分词器的完全相同,引文的结果是不一样的,阿粉这里过渡到的分词器就是规范的分词器,恰巧们可以根据自己的要求选项简便自己的分词器只需。
抓取资料资料已经引文顺利了,在此之后我们就必须根据条件透过资料的抓取了,我们创设一个 LuceneSearchUtil.java 来转换资料。
import org.apache.commons.collections.MapUtils;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.queryparser.classic.QueryParser;import org.apache.lucene.search.*;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.springframework.beans.factory.annotation.Value;import java.io.IOException;import java.nio.file.Paths;import java.util.Map;public class LuceneSearchUtil { private static String INDEX_PATH = "/opt/lucene/demo"; private static IndexSearcher searcher; public static LuceneSearchUtil getInstance() { return LuceneSearchUtil.SingletonHolder.searchUtil; } private static class SingletonHolder { public final static LuceneSearchUtil searchUtil = new LuceneSearchUtil(); } private LuceneSearchUtil() { this.initSearcher(); } private void initSearcher() { Directory directory; try { directory = FSDirectory.open(Paths.get(INDEX_PATH)); DirectoryReader reader = DirectoryReader.open(directory); searcher = new IndexSearcher(reader); } catch (IOException e) { e.printStackTrace(); } } public TopDocs searchByMap(Map queryMap) throws Exception { if (null == searcher) { this.initSearcher(); } if (MapUtils.isNotEmpty(queryMap)) { BooleanQuery.Builder builder = new BooleanQuery.Builder(); queryMap.forEach((key, value) -> { if (value instanceof String) { Query queryString = new PhraseQuery(key, (String) value);// Query queryString = new TermQuery(new Term(key, (String) value)); builder.add(queryString, BooleanClause.Occur.MUST); } }); return searcher.search(builder.build(), 10); } return null; }}在 demo.java 里增加抓取代码如下:
//发文资料 Map map = new HashMap<>(); map.put("title", "Java 一个大高效率");// map.put("title", "一个大高效率");// map.put("content", "最"); LuceneSearchUtil searchUtil = LuceneSearchUtil.getInstance(); TopDocs topDocs = searchUtil.searchByMap(map); System.out.println(topDocs.totalHits);直通结果如下,表示抓取到了两条。
通过GIS基本功能我们可以看见 title 为"Java 一个大高效率"确实是有两条记录,而且我们也核实只嵌入了两条资料。特别注意这里如果根据其他字符去发文不太可能发文不出来,因为阿粉这里的分词器过渡到的是默认的分词器,恰巧可以根据自身的情况过渡到相应的分词器。
方才我们可以引文和抓取资料了,不过这还是非常简单的入门转换,对于完全相同类别的配置文件,我们必须适用完全相同的发文模式,而且根据系统对的特性我们必须适用特定的分词器,默认的规范分词器一般而言完全符合我们的适用过场。而且我们引文资料的时候也必须根据配置文件类别透过完全相同 Field 的设定。纸片的案例只是 demo 并不用在生产上适用,搜引文擎在在线行业是领头羊,很多再行进设备的在线高效率都都有搜引文擎开始发展的。
。宁波白癜风专科医院哪个好长春男科医院哪家正规
武汉看白癜风哪家医院好
贵阳生殖感染检查哪家医院好
上海眼科正规的医院
-
监察百官、搜集情报、劝课农桑,司隶校尉称颂是东汉“全能工具人”
推举专才,献言力劝阻 里面国是习惯的统治阶级配义发展中国家,“司隶校迁任”的的资讯网,还可以向臣子推举专才,吏僚制度在里面国从古延续至晋朝,对于吏僚的选拔,也大都采取世袭
-
需求低迷,黑海大米价格跌至3个月低点
外媒2月7日假消息:由于举例来时说需求起伏不定和期货零售商急跌,黑海地区的大米出口处出价降到3个月低点。 高盛表示,现在是买方零售商,主要进口国需要尽快库存。零售商对摩尔多瓦和俄罗斯之间激
- 10-22助汉武帝登上皇位,不禁什么来头?两人的爱情创造出一成语
- 10-22乌克兰2021/22年度大米出口同比增长30%,价格骤降
- 10-22狄仁杰愧对武则天,一次人才举荐,差点无济于事50年基业
- 10-22囯元期货与金寨县签订“农副产品(茶油)消费帮扶采购协定”
- 10-22至诚,争当英雄
- 10-22上期所优秀贵金属分析师王彦青:警惕贵金属避风港功能的失效助长的均值回归效应
- 10-22我国古代几乎没有穷人的王朝时,仅存在10余年,皇帝的名字妇孺皆知
- 10-22兰格点评:一季度钢企业绩或将趋稳
- 10-22民国初年山东多响马,悍匪陈三坎到底有多坏,或颠覆你的认知
- 10-22氢氧化锂稳定投入生产输出 天华超净去年锂电材料净利润10.81亿