【问题标题】:What is an alternative for Lucene Query's extractTerms?Lucene Query 的 extractTerms 的替代方案是什么?
【发布时间】:2018-11-29 15:02:47
【问题描述】:

在 Lucene 4.6.0 中有一个方法 extractTerms 可以从查询中提取词条 (Query 4.6.0)。但是,从 Lucene 6.2.1 开始,它不再存在 (Query Lucene 6.2.1)。是否有有效的替代方案?

我需要解析由 QueryParser 构建的查询的术语(和对应字段)。

【问题讨论】:

  • 你能举个例子吗?
  • 我需要计算查询中每个术语的 tfidf,所以我需要遍历它们。

标签: lucene query-parser


【解决方案1】:

我暂时用以下代码解决了我的问题。更智能的替代方案将被广泛接受:

QueryParser qp = new QueryParser("title", a);
Query q = qp.parse(query);
Set<Term> termQuerySet = new HashSet<Term>();
Weight w = searcher.createWeight(q, true, 3.4f);
w.extractTerms(termQuerySet);

【讨论】:

    【解决方案2】:

    也许不是最好的答案,但一种方法是使用相同的分析器并对查询字符串进行标记:

    Analyzer anal = new StandardAnalyzer();
    TokenStream ts = anal.tokenStream("title", query); // string query
    CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
    ts.reset();
    while (ts.incrementToken()) {
        System.out.println(termAtt.toString());
    }
    anal.close();
    

    【讨论】:

      猜你喜欢
      • 2021-11-13
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多