【问题标题】:Using Lucene's API, can I boost terms?使用 Lucene 的 API,我可以提升条款吗?
【发布时间】:2011-12-01 06:44:12
【问题描述】:

使用 Lucene 的查询解析器,可以通过附加“^n”来提升词条(使它们在搜索结果中的权重更高),例如“apple^5 pie”将赋予“apple”一词五倍的重要性。使用 API 构建查询时是否可以这样做?请注意,我不想提升字段或文档,而是提升字段中的单个术语。

【问题讨论】:

    标签: lucene full-text-search


    【解决方案1】:

    您只需要使用Query 类的setBoost(float) 方法即可。

    例如

    TermQuery tq1 = new TermQuery(new Term("text", "term1"));
    tq1.setBoost(5f);
    TermQuery tq2 = new TermQuery(new Term("text", "term2"));
    tq2.setBoost(0.8f);
    BooleanQuery query = new BooleanQuery();
    query.add(tq1, Occur.SHOULD);
    query.add(tq2, Occur.SHOULD);
    

    这相当于解析查询text:term1^5 text:term2^0.8

    【讨论】:

    • 谢谢!现在为什么我找不到……我发现的只是文档提升和字段提升。现在我因为不得不问而感到愚蠢。不过谢谢!
    • 这个 api 不适用于 lucene 6 .. 你必须环绕一个 boostquery 吗?有点浪费?你知道其他方式吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2011-05-22
    • 2023-04-06
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多