【问题标题】:Lucene Query BoostingLucene 查询提升
【发布时间】:2011-07-02 11:16:23
【问题描述】:

我正在从文件中读取 2 个查询,例如,

Query q1 = new QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse(dis.readLine());
Query q2 = new QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse(dis.readLine());

我希望将这些查询组合为一个查询,并为查询 2 即 q2 提供一些提升(例如 5)。

谢谢,
拉维

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    我相信这应该可行:

    q2.setBoost(5);
    
    BooleanQuery q3 = new BooleanQuery();
    q3.add(q1, BooleanClause.Occur.SHOULD);
    q3.add(q2, BooleanClause.Occur.SHOULD);
    

    您使用BooleanQuery q3 进行搜索。

    【讨论】:

    • 谢谢。我这样做了 Query q1 = new QueryParser(Version.LUCENE_30, "Id", analyzer).parse(dis.readLine());查询 q2 = new QueryParser(Version.LUCENE_30, "Id", analyzer).parse(dis.readLine()); q1.setBoost(5f);查询 q = q1.combine(new Query[]{q​​2, q1});
    【解决方案2】:

    我不确定您是否可以提升查询。我知道您可以在创建索引时提升字段,例如

    Field field = new Field("id", id, ......);
    field.setBoost(0.5);
    

    就结合这两个查询而言:

    String term = dis.readLine() + " AND " + dis.readLine();
    

    或者类似的东西.....

    【讨论】:

    • String term = dis.readLine() + " AND " + dis.readLine() 实际上是字符串,然后我们可以解析这个字符串。但我需要的是有 2 个查询 Q1 n Q2 如何组合它。我尝试了 q1..setBoost(0.5),没有出现错误,因此可以进行查询提升。我想结合增强查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2011-09-28
    • 2018-03-02
    • 1970-01-01
    • 2012-03-11
    • 2011-05-22
    相关资源
    最近更新 更多