【发布时间】: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
是否可以根据 lucene 中的词向量位置来搜索文档相似度?
比如三个文件,内容如下
1:嗨,你好吗
2:嗨,你好吗
3:嗨,你好吗
现在,如果在 lucene 中搜索 doc 1,那么它应该返回 doc 3 的得分高于 doc 2 的得分,因为 doc 2 在不同的位置有“you”和“are”两个词,
简而言之,lucene 应该返回与术语位置完全匹配的文档
【问题讨论】:
标签: lucene lucene.net
我认为你需要的是一个 PhraseQuery,它是一个 Lucene Query 类型,它将考虑到你的标记的精确位置并允许你定义一个 slop 或关于这些标记的排列容差。
换句话说,您的标记与来源的位置差异越大,得分就越少。
你可以这样使用它:
QueryBuilder analyzedBuilder = new QueryBuilder(new MyAnalyzer());
PhraseQuery query = analyzedBuilder.createPhraseQuery("fieldToSearchOn", textQuery);
createPhraseQuery 允许第三个参数 slop 如果你想调整它,我提到过。
问候,
【讨论】: