diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9dd3bd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +do.sh +# use two star ** to repr any internal dir +.git/** +.self/** +.bigFile/** +/*.zip +!.gitignore +~$* +*.o +*.toc +*.synctex.* +*.log +*.aux +*.pyc +a.out +__pycache__/** diff --git a/README.md b/README.md new file mode 100644 index 0000000..2e51db1 --- /dev/null +++ b/README.md @@ -0,0 +1,133 @@ + +# 中国科学技术大学课程资源 +[![Stars](https://img.shields.io/github/stars/USTC-Resource/USTC-Course.svg?label=Stars&style=social)](https://github.com/USTC-Resource/USTC-Course/stargazers) +[![Forks](https://img.shields.io/github/forks/USTC-Resource/USTC-Course.svg?label=Forks&style=social)](https://github.com/USTC-Resource/USTC-Course/network/members) +[![repo-size](https://img.shields.io/github/repo-size/USTC-Resource/USTC-Course.svg)]() +[![License](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-nc-sa/4.0/) + +>>本仓库收录中国科学技术大学众多课程资源的笔记,总结,经验等**学生原创内容** + +# 目录索引 +* [版权说明](#版权说明) +* [反馈方式](#反馈方式) +* [资料下载](#资料下载) +* [课程结构](#课程结构) +* [课程关系](#课程关系) +* [课程目录](#课程目录) +* [贡献投稿](#贡献投稿) + +# 版权说明 +本仓库分享资料遵守其创作者之规定, 由同学生自愿投稿。 + +对无特别声明的资料,谨以[知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-sa/4.0/) 授权。![](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png) + +# 反馈方式 +- [issue](https://github.com/USTC-Resource/USTC-Course/issues/new) +- email +- [QQ](http://wpa.qq.com/msgrd?v=3&uin=414313516&site=qq&menu=yes) + +# 资料下载 + + +- [github 网页](#课程目录) +- [脚本生成的网页](https://mbinary.xyz/ustc-cs/) +- [DownGit](http://downgit.zhoudaxiaa.com/#/home) +- [gitzip-chrome-extension](https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn) + +注意,建议不要直接用 GitHub 仓库的 `Download Zip`。因为网速慢,而且仓库很大,很可能下载到中途就切断连接了。 +推荐用 DownGit 工具,方法很简单,在 GitHub 这里浏览网页到某个文件夹,然后将这个网页地址粘贴到 gitzip 下载即可。 + +# 课程结构 +每门课程大致结构如下,有些栏目可能没有,也可以自己添加认为合理的栏目 +``` +course +├ codes +│   ├ mbinary0 +│   ├ mbinary1 +│   └ mbinary2 +├ labs +├ exams +├ notes +├ experience +└ README.md +``` +# 课程关系 +![](https://user-images.githubusercontent.com/29198767/53245024-851b1280-36e7-11e9-9d22-7ee65446c68a.png) + +更多信息可以下载[官网的培养方案](https://www.teach.ustc.edu.cn/education/241.html/attachment/14-215%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%AD%A6%E9%99%A2-2013) + +# 课程目录 +**根据拼音字母排序**, 可以通过在此页面搜索课程名快速定位。 + +* [.](.) + * [编译原理和技术](./编译原理和技术) + * [操作系统原理与设计](./操作系统原理与设计) + * [c程序设计](./c程序设计) + * [大学物理实验](./大学物理实验) + * [计算机网络](./计算机网络) + * [计算机系统详解(csapp)](./计算机系统详解(csapp)) + * [计算机与信息类](./计算机与信息类) + * [计算机组成原理](./计算机组成原理) + * [模拟与数字电路](./模拟与数字电路) + * [数据结构](./数据结构) + * [数理逻辑](./数理逻辑) + * [算法基础](./算法基础) + * [随机过程](./随机过程) + * [utils](./utils) + * [Web-信息处理与应用](./Web-信息处理与应用) + * [微机原理与系统](./微机原理与系统) + +# 贡献投稿 +欢迎大家的参与与贡献^_^ , 欢迎联系 org 管理员, 申请加入 USTC-Resource org。 +* github 上不能直接上传大于 100mb 的文件。对于超过 100 mb 的文件,可以存在网盘,然后在 README 文件中贴上链接 +* 文件内容的改动会使 git 重新上传, 在没有必要的情况下, 不要对二进制文件做任何更改. + + + diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.docx" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.docx" new file mode 100644 index 0000000..6675258 Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.docx" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.pdf" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.pdf" new file mode 100644 index 0000000..53ff85a Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.pdf" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.zip" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.zip" new file mode 100644 index 0000000..be196c2 Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/PB15111604\351\207\221\346\263\275\346\226\207.zip" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/CNLPIRLibrary.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/CNLPIRLibrary.java" new file mode 100644 index 0000000..dd01049 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/CNLPIRLibrary.java" @@ -0,0 +1,17 @@ +package ICTCLAS_Analyzer; + +import com.sun.jna.Library; +import com.sun.jna.Native; + +public interface CNLPIRLibrary extends Library { + + CNLPIRLibrary Instance = (CNLPIRLibrary) Native.loadLibrary("NLPIR", CNLPIRLibrary.class); + + public boolean NLPIR_Init(String sDataPath, int encoding, String sLicenceCode); + + public String NLPIR_ParagraphProcess(String sParagraph, int bPOSTagged); + + public int NLPIR_ImportUserDict(String dictFileName, boolean bOverwrite); + + public String NLPIR_GetLastErrorMsg(); +} \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRException.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRException.java" new file mode 100644 index 0000000..dc223ad --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRException.java" @@ -0,0 +1,10 @@ +package ICTCLAS_Analyzer; + +public class NLPIRException extends Exception{ + + private static final long serialVersionUID = 6897134322647598254L; + + public NLPIRException(String erromsg) { + super(erromsg); + } +} \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizer.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizer.java" new file mode 100644 index 0000000..222eb98 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizer.java" @@ -0,0 +1,95 @@ +package ICTCLAS_Analyzer; + +import java.io.IOException; + +import org.apache.lucene.analysis.Tokenizer; +import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; +import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; +import org.apache.lucene.analysis.tokenattributes.TypeAttribute; +import org.apache.lucene.util.AttributeFactory; + +public class NLPIRTokenizer extends Tokenizer { + + private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class); + private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class); + private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class); + + private String[] buffer = null; + private StringBuffer cbuffer = null; + int start = 0; + int end = 0; + int current = 0; + + String data=null; + int encoding=1; + String sLicenceCode=null; + String userDict=null; + boolean bOverwrite=false; + + public void defaultInit() { + } + + public NLPIRTokenizer(AttributeFactory factory) { + super(factory); + this.defaultInit(); + this.init(data, encoding, sLicenceCode, userDict, bOverwrite); + } + + public NLPIRTokenizer(String data, int encoding, String sLicenceCode, String userDict, boolean bOverwrite) { + this.init(data, encoding, sLicenceCode, userDict, bOverwrite); + } + + public NLPIRTokenizer(AttributeFactory factory, String data, int encoding, String sLicenceCode, String userDict, boolean bOverwrite) { + super(factory); + this.init(data, encoding, sLicenceCode, userDict, bOverwrite); + } + + private void init(String data, int encoding, String sLicenceCode, String userDict, boolean bOverwrite) { + boolean flag = CNLPIRLibrary.Instance.NLPIR_Init(data, encoding, sLicenceCode); + if (!flag) { + try { + throw new NLPIRException(CNLPIRLibrary.Instance.NLPIR_GetLastErrorMsg()); + } catch (NLPIRException e) { + e.printStackTrace(); + } + } else if (userDict != null && !userDict.isEmpty()&&!userDict.equals("\"\"")) { + int state = CNLPIRLibrary.Instance.NLPIR_ImportUserDict(userDict, bOverwrite); + if (state == 0) + try { + throw new NLPIRException(CNLPIRLibrary.Instance.NLPIR_GetLastErrorMsg()); + } catch (NLPIRException e) { + e.printStackTrace(); + } + } + } + + @Override + public boolean incrementToken() throws IOException { + if (buffer != null && buffer.length < current + 1) { + cbuffer = null; + buffer = null; + start = 0; + end = 0; + current = 0; + return false; + } + if (cbuffer == null) { + cbuffer = new StringBuffer(); + int c = 0; + while ((c = input.read()) != -1) { + cbuffer.append((char) c); + } + buffer = CNLPIRLibrary.Instance.NLPIR_ParagraphProcess(cbuffer.toString(), 0).split("\\s"); + } + clearAttributes(); + int length = buffer[current].length(); + end = start + length; + termAtt.copyBuffer(buffer[current].toCharArray(), 0, length); + offsetAtt.setOffset(correctOffset(start), correctOffset(end)); + typeAtt.setType("word"); + start = end; + current += 1; + return true; + } + +} \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerAnalyzer.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerAnalyzer.java" new file mode 100644 index 0000000..ed7d182 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerAnalyzer.java" @@ -0,0 +1,28 @@ +package ICTCLAS_Analyzer; + +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.analysis.Tokenizer; + +public class NLPIRTokenizerAnalyzer extends Analyzer{ + + String data=null; + int encoding=1; + String sLicenceCode=null; + String userDict=null; + boolean bOverwrite=false; + + public NLPIRTokenizerAnalyzer(String data,int encoding,String sLicenceCode,String userDict,boolean bOverwrite) { + this.data=data; + this.encoding=encoding; + this.sLicenceCode=sLicenceCode; + this.userDict=userDict; + this.bOverwrite=bOverwrite; + } + + @Override + protected TokenStreamComponents createComponents(String fieldName) { + final Tokenizer tokenizer = new NLPIRTokenizer(this.data,this.encoding,this.sLicenceCode,this.userDict,this.bOverwrite); + return new TokenStreamComponents(tokenizer); + } + +} \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerFactory.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerFactory.java" new file mode 100644 index 0000000..d6c5bcd --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/ICTCLAS_Analyzer/NLPIRTokenizerFactory.java" @@ -0,0 +1,28 @@ +package ICTCLAS_Analyzer; + + +import java.util.Map; + +import org.apache.lucene.analysis.Tokenizer; +import org.apache.lucene.analysis.util.TokenizerFactory; +import org.apache.lucene.util.AttributeFactory; + +public class NLPIRTokenizerFactory extends TokenizerFactory { + + public NLPIRTokenizerFactory(Map args) { + super(args); + if (!args.isEmpty()) { + throw new IllegalArgumentException("Unknown parameters: " + args); + } + } + + public Tokenizer create(AttributeFactory factory, String data, int encoding, String sLicenceCode, String userDict, + boolean bOverwrite) { + return new NLPIRTokenizer(factory, data, encoding, sLicenceCode, userDict, bOverwrite); + } + + @Override + public Tokenizer create(AttributeFactory factory) { + return new NLPIRTokenizer(factory); + } +} \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/META-INF/MANIFEST.MF" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/META-INF/MANIFEST.MF" new file mode 100644 index 0000000..5e94951 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/META-INF/MANIFEST.MF" @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/WEB-INF/web.xml" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/WEB-INF/web.xml" new file mode 100644 index 0000000..f1b5d56 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/WEB-INF/web.xml" @@ -0,0 +1,12 @@ + + + searchEngine + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/back.jpg" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/back.jpg" new file mode 100644 index 0000000..59ba826 Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/back.jpg" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/exam.jpg" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/exam.jpg" new file mode 100644 index 0000000..1d1d5c9 Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/exam.jpg" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.jpg" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.jpg" new file mode 100644 index 0000000..ae1bd7f Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.jpg" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.png" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.png" new file mode 100644 index 0000000..04f191b Binary files /dev/null and "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/green.png" differ diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/index.jsp" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/index.jsp" new file mode 100644 index 0000000..837e7f8 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/index.jsp" @@ -0,0 +1,29 @@ + +<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%> + + + 泽文的搜索引擎 + + +

+
+

泽文的搜索引擎



+

+ + + +

+
+ + + + + diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/result.jsp" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/result.jsp" new file mode 100644 index 0000000..36c873c --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/WebContent/result.jsp" @@ -0,0 +1,104 @@ +<%@ page import = "lucene.Search, java.util.Map, java.util.ArrayList" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + +<% + String queryText, queryPage, queryNext, queryLast; + String strHistory; + request.setCharacterEncoding("UTF-8"); + queryText = request.getParameter("query"); + queryPage = request.getParameter("page"); + queryLast = request.getParameter("last"); + strHistory = request.getParameter("history"); + if(strHistory == null) + strHistory = " "; + if(strHistory != null && !strHistory.equals("null") && queryText != null && !strHistory.contains(queryText)) + strHistory = " "+queryText + "
" +strHistory ; + if(queryPage == null || queryPage.equals("")) + queryPage = "1"; + queryNext = Integer.toString(Integer.parseInt(queryPage)+1); + if(queryLast != null && !queryLast.equals(queryText)){ + queryPage = "1"; + queryNext = "2"; + } +%> + + + + <%= queryText %> - 泽文的搜索引擎 + + + + +
+ + + + + + + + 页 +
+

+<% + System.out.println(queryText); + boolean flag = false; + Search searcher = new Search(); + ArrayList> totalResults, results=new ArrayList<>(); + int Page = 1, size = 0; + if( queryPage != null && queryPage.length()!=0) + Page = Integer.parseInt(queryPage); + if(queryText != null){ + + totalResults = searcher.search(queryText); + size = totalResults.size(); + out.println("" + "找到了 " + size + " 个结果"); + out.println("" + "每页最多显示15条,当前是第 " + Page + " 页, 一共" + (size / 15 + 1) + "页"); + out.println("" + "

"); + if(size > (Page-1)*15 && Page > 0) + for (int i = 0; i < 15; i++) { + if((Page-1)*15+i < size) + results.add(totalResults.get((Page-1)*15+i)); + } + else if(size != 0){ + out.println(""); + out.print("抱歉,超出了页数范围: 1 - " + (size/15+1)); + out.println("" + "
"); + flag = true; + } + if(results != null && results.size() != 0 ){ + String strBody, strTitle, strUrl, strScore, strKeywords; + for(int i = 0 ; i < results.size() ; i ++){ + Map map = results.get(i); + + strTitle = map.get("title"); + strBody = map.get("contents"); + strUrl = map.get("url"); + strScore = map.get("score"); + strKeywords = map.get("keywords"); + + out.println(""); + out.print("" + strTitle + ""); + out.println("" + "
"); + out.println("" + "score: " + strScore + " 关键字:" + (strKeywords==null?"":strKeywords)); + out.println("" + "
"); + out.println("" + strBody + "
" + "
"); + } + out.println("
"); + } + else if(flag == false){ + out.println(""); + out.print("抱歉,没有找到" + queryText); + out.println("" + "
"); + } + out.println("搜索记录:
"); + out.println(""); + out.println(strHistory); + out.println("" + "
"); + } +%> + + + + \ No newline at end of file diff --git "a/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/lucene/Index.java" "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/lucene/Index.java" new file mode 100644 index 0000000..72861c5 --- /dev/null +++ "b/Web-\344\277\241\346\201\257\345\244\204\347\220\206\344\270\216\345\272\224\347\224\250/labs/lab1-\346\220\234\347\264\242\345\274\225\346\223\216/src/lucene/Index.java" @@ -0,0 +1,262 @@ +package lucene; + +import java.io.*; + +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.ArrayList; + +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field.Store; +import org.apache.lucene.document.StringField; +import org.apache.lucene.document.TextField; +import org.apache.lucene.index.DirectoryReader; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig.OpenMode; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.queryparser.classic.QueryParser; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.ScoreDoc; +import org.apache.lucene.store.*; +import org.jsoup.Jsoup; + +import ICTCLAS_Analyzer.*; + +public class Index{ + // indexPath - 存放index + final public static String indexPath = "D:/2017.2/searchEngine/index"; + // originDataPath - 存放.txt + final private static String originDataPath = "D:/2017.2/searchEngine/originData"; + + final private static String[] uselessTags = {"","","","","","","