我正在构建一种在位置倒排索引中执行邻近搜索的方法- Implementing proximity search in positional inverted index nodejs.这是一个子问题.
我有一个数组数组,其中包含页面上不同单词的位置.
{
pageno: [
[positions of word 1],
[positions of word 2],
[positions of word n]
]
}
例如-
{
1 : [
[1, 5, 6],
[2, 41],
[4, 7, 11]
],
2 : [
[1, 5, 6],
[2, 41],
[3, 7, 11]
]
}
我想为每pageNo
个单词找出出现的次数,使单词位置之间的差异之和不超过指定值(proximity
).
如果值proximity
为1,则所有单词之间不应超过1个单词.因此,"Hello world NodeJS"应该与"Hello world in NodeJS"匹配,因为中间只有一个单词--in.
但是,它不会匹配‘Hello from world in NodeJS’,因为中间总共有两个单词--‘from’和‘in’.
请注意,允许使用乱七八糟的单词.
如何在JavaScript中做到这一点?-我试图做类似Finding matches between multiple JavaScript Arrays的事情,但无法进行必要的更改以使其在这里工作.
上述情况的预期输出为(邻近度:2):
{
1 : 3,
2 : 3
}
第1页:(1,2,4)-邻近度(2-1-1)+(4-2-1)=1,(5,2,4)-邻近度(5-4-1)+(4-2-1)=1和(6,2,4)
第二页:(1,2,3),(5,2,3),(6,2,3)