lucene5(5)搜索api
祈雨的笔记
·
2017-10-01
·
via 祈雨的笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| QueryParser queryParser = new QueryParser("context",getAnalyzer()); Query query = null; query = queryParser.parse("Identified");// 完整匹配分词查询 /** * 通配符 ?,*的使用 */ // 使用?匹配单个字符查询 //query = queryParser.parse("Identi?ied"); // 使用*匹配多个字符查询 //query = queryParser.parse("L*r"); /** * 布尔运算AND, OR,NOT,+,-的使用,注意:一定要是大写的AND和OR,NOT */ // 使用OR联合多关键字查询,也可用空格代替OR //query = queryParser.parse("Licensor OR ce*"); // 这个和使用OR一样的效果 //query = queryParser.parse(" Licensor ce*"); // +代表必须的条件,搜索文档必须包含Licensor 可能有Wildcard //query = queryParser.parse("+Licensor Wildcard"); // 使用AND取多个关键字的并集查询 //query = queryParser.parse("Licensor AND ce* AND Licenso?"); // 搜索Lincensor Apache而不是Apache Licensor //query = queryParser .parse("'Lincensor Apache' NOT 'Apache Licensor'"); // "-"同NOT的效果一样 //query = queryParser .parse("'Lincensor Apache' - 'Apache Licensor'"); /** * 使用正则表达式查询 */ // 这个匹配Lincensor,aicensor,bicensor分词 //query = queryParser.parse("/[Lab]icensor/"); // 根据需要可以更灵活的使用 //query = queryParser.parse("/[Lab]icenso[a-z]/"); /** * 使用~模糊匹配查询 这个要和*号的用法区分下,*号完整通配多个字符查询,而~不是简单的通配,这个模糊匹配和Lucene的评分有关 */ // 可以查到Licensor关键字,而queryParser.parse("icensor*")查不到 //query = queryParser.parse("icensor~"); // ~后面可加0-2的整数来制定模糊匹配度,默认不加为1 //query = queryParser.parse("Licens~1"); // ~还可以模糊匹配差异化N字符数的多个关键字 //query = queryParser.parse("Licens cens ~0"); /** * 范围查询,多用于数字和时间的查询 */ // {}abc与Licenszhi间的文件,不包含 //query = queryParser.parse("{abc TO Licens}"); // {}abc与Licenszhi间的文件,包含本身 //query = queryParser.parse("[abc TO Licens]"); /** * 关键字加权处理查询 */ // 默认为1,可加权可降权,可通过加权处理给匹配的结果排序 //query = queryParser.parse("Licensor Wildcard^4 "); // 可使用()组合多个条件查询 //query = queryParser .parse("(+Licensor +Wildcard) AND easier"); // ps: 查询部分字符需要转义处理,如(+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /)
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。