可以根据lucene中的术语 - 矢量位置搜索文档相似度吗? 例如,有三个文件的内容如下
1:你好,你好吗? 2:你好,你是怎样的 3:你好,你好吗
现在如果在lucene中搜索doc 1,那么它应该返回doc 3,得分更高,然后doc 2得分更少,因为doc 2有"你" """不同职位的单词,
简而言之,lucene应返回具有术语位置的精确匹配文档
答案 0 :(得分:0)
我认为您需要的是 PhraseQuery ,它是一种Lucene 查询类型,它会考虑您的令牌的精确位置并允许您定义<强烈的> slop 或对这些令牌的排列容忍度。
换句话说,就位置而言,您的代币与来源的差异越大,得分就越少。
你可以这样使用它:
QueryBuilder analyzedBuilder = new QueryBuilder(new MyAnalyzer());
PhraseQuery query = analyzedBuilder.createPhraseQuery("fieldToSearchOn", textQuery);
createPhraseQuery 允许我提到的第三个参数 slop ,如果你想调整它。
此致