您好我有关于lucence搜索的问题 是否可以使用lucence搜索从文件中搜索2个字符
对于前。如果有像" karthik test"这样的名字是否可以搜索" ka"或者" te"在lucence。如果这样请提供代码..
答案 0 :(得分:0)
是的,可以使用wildcards。
将您的QueryParser与te*
一起投放,它会生成一个查询,该查询以带有任何后缀的te
前缀开始。
答案 1 :(得分:0)
也许这对你有帮助
private List search(String word, IndexSearcher searcher, Date fromDate, Date toDate, int skip, int noOfRecords) throws Exception { StandardAnalyzer analyzer = new StandardAnalyzer(); BooleanQuery.Builder finalQuery = new BooleanQuery.Builder(); List results = null; for(String key : keyUtil.getAllKeys()) { if((!key.contains("Date") || !key.contains("Time"))) { QueryParser queryParser = new QueryParser(key, analyzer); Query query = queryParser.parse(word); finalQuery.add(query, Occur.SHOULD); } } if(fromDate != null && toDate != null) { Query query = NumericDocValuesField.newSlowRangeQuery("StartDate", fromDate.getTime(), toDate.getTime()); finalQuery.add(query, Occur.MUST); } TopDocs hits = searcher.search(finalQuery.build(), skip + noOfRecords); results = new ArrayList(); if(hits.totalHits.value > 0) { int count = 0; for (ScoreDoc sd : hits.scoreDocs) { if(count >= skip) { Document d = searcher.doc(sd.doc); results.add(d.get("storePath")); } count ++; } } analyzer.close(); return results; }
您始终可以使用带有属性“word”的 RegEx 模式。喜欢
* someWord *