【问题标题】:Search withTermvector position in lucene在lucene中用Termvector位置搜索
【发布时间】:2015-03-02 08:00:43
【问题描述】:

是否可以根据 lucene 中的词向量位置来搜索文档相似度?
比如三个文件,内容如下

1:嗨,你好吗
2:嗨,你好吗
3:嗨,你好吗

现在,如果在 lucene 中搜索 doc 1,那么它应该返回 doc 3 的得分高于 doc 2 的得分,因为 doc 2 在不同的位置有“you”和“are”两个词,

简而言之,lucene 应该返回与术语位置完全匹配的文档

【问题讨论】:

    标签: lucene lucene.net


    【解决方案1】:

    我认为你需要的是一个 PhraseQuery,它是一个 Lucene Query 类型,它将考虑到你的标记的精确位置并允许你定义一个 slop 或关于这些标记的排列容差。

    换句话说,您的标记与来源的位置差异越大,得分就越少。

    你可以这样使用它:

    QueryBuilder analyzedBuilder = new QueryBuilder(new MyAnalyzer());
    PhraseQuery query = analyzedBuilder.createPhraseQuery("fieldToSearchOn", textQuery);
    

    createPhraseQuery 允许第三个参数 slop 如果你想调整它,我提到过。

    问候,

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2023-03-21
      • 2012-10-06
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      相关资源
      最近更新 更多