【问题标题】:Is it 2 character search possible in lucencelucence中是否可以进行2个字符搜索
【发布时间】:2021-03-19 13:58:21
【问题描述】:

您好,我有一个关于 lucence 搜索的问题 是否可以使用 lucence 搜索从文件中搜索 2 个字符

例如。如果有“karthik test”之类的名称,是否可以在 lucence 中搜索“ka”或“te”。如果是这样,请提供一个代码片段..

【问题讨论】:

    标签: java algorithm lucene full-text-search search-engine


    【解决方案1】:

    是的,这可以使用wildcards

    te* 输入你的QueryParser,它会生成一个以te 前缀和任何后缀开头的查询。

    【讨论】:

    • 数据量大时会不会导致性能问题?
    【解决方案2】:

    也许这会对你有所帮助

    私人列表搜索(字符串单词,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 * 

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2016-05-04
      相关资源
      最近更新 更多