【发布时间】:2021-03-19 13:58:21
【问题描述】:
您好,我有一个关于 lucence 搜索的问题 是否可以使用 lucence 搜索从文件中搜索 2 个字符
例如。如果有“karthik test”之类的名称,是否可以在 lucence 中搜索“ka”或“te”。如果是这样,请提供一个代码片段..
【问题讨论】:
标签: java algorithm lucene full-text-search search-engine
您好,我有一个关于 lucence 搜索的问题 是否可以使用 lucence 搜索从文件中搜索 2 个字符
例如。如果有“karthik test”之类的名称,是否可以在 lucence 中搜索“ka”或“te”。如果是这样,请提供一个代码片段..
【问题讨论】:
标签: java algorithm lucene full-text-search search-engine
是的,这可以使用wildcards。
用te* 输入你的QueryParser,它会生成一个以te 前缀和任何后缀开头的查询。
【讨论】:
也许这会对你有所帮助
私人列表搜索(字符串单词,IndexSearcher 搜索器,日期 fromDate,日期 toDate,int 跳过,int noOfRecords)抛出异常 { StandardAnalyzer 分析器 = new StandardAnalyzer(); BooleanQuery.Builder finalQuery = new BooleanQuery.Builder(); 列表结果 = null; for(字符串键:keyUtil.getAllKeys()){ if((!key.contains("Date") || !key.contains("Time"))) { QueryParser queryParser = new QueryParser(key, 分析器); 查询查询 = queryParser.parse(word); finalQuery.add(query, Occur.SHOULD); } } if(fromDate != null && toDate != null) { 查询查询 = NumericDocValuesField.newSlowRangeQuery("StartDate", fromDate.getTime(), toDate.getTime()); finalQuery.add(query, Occur.MUST); } TopDocs hits = searcher.search(finalQuery.build(), skip + noOfRecords); 结果 = 新的 ArrayList(); 如果(命中。总命中值> 0){ 整数计数 = 0; for (ScoreDoc sd : hits.scoreDocs) { 如果(计数>=跳过){ 文档 d = searcher.doc(sd.doc); results.add(d.get("storePath")); } 计数++; } } 分析器.close(); 返回结果; }您始终可以使用带有“word”属性的 RegEx 模式。喜欢
* someWord *
【讨论】: