在lucene中搜索ofTermvector位置

时间:2015-03-02 08:00:43

标签: lucene lucene.net

可以根据lucene中的术语 - 矢量位置搜索文档相似度吗? 例如,有三个文件的内容如下

1:你好,你好吗? 2:你好,你是怎样的 3:你好,你好吗

现在如果在lucene中搜索doc 1,那么它应该返回doc 3,得分更高,然后doc 2得分更少,因为doc 2有"你" """不同职位的单词,

简而言之,lucene应返回具有术语位置的精确匹配文档

1 个答案:

答案 0 :(得分:0)

我认为您需要的是 PhraseQuery ,它是一种Lucene 查询类型,它会考虑您的令牌的精确位置并允许您定义<强烈的> slop 或对这些令牌的排列容忍度。

换句话说,就位置而言,您的代币与来源的差异越大,得分就越少。

你可以这样使用它:

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

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

此致