起个马甲好困难 2010-11-20 22:50
浏览 299
已采纳

Lucene如何将含有某一关键字的文档过滤掉?

比如我要搜索含“房间”一词的文档,同时将含有“白色”字眼的搜索结果给筛掉,请问应该怎么写呢?

之前从Lucene的API手册上发现有一个org.apache.lucene.search.TermsFilter的类可能可以实现这个功能,但在写代码的时候却老是引入不了这个类。不知道这个类放在哪个jar包里。。

当然,如果有其它更好的方法的话也可以分享一下。

  • 写回答

3条回答 默认 最新

  • beneo 2010-11-20 23:21
    关注

    TermsFilter不是要你引入的,而是要和FilteredQuery一起用的。。

    此外,[b]TermsFilter不是过滤掉你不要的,而是只获得含有这些terms的doc集合[/b]

    构建一个BooleanQuery

    [code="java"]
    BooleanQuery bq = new BooleanQuery();
    TermQuery tq = new TermQuery(new Term(k, v));

    // 添加你自己的查询
    bq.add(xx, BooleanClause.Occur.MUST);
    bq.add(tq, BooleanClause.Occur.MUST_NOT );

    searcher.search(bq, ...);
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog