前几天在做广告bidphase相关的东西,用到几个和proximity相关的feature,了解了一下这个技术在搜索中的运用。现在的搜索引擎应该都支持proximity了,这个只需要在建立index的时候代入doc中各个term的位置信息就可以了。一般来说,proximity是比较耗时间的,所以一般都放在第二阶段rank来使用(第一阶段用用vector space model之类的,算算TFIDF)。
回想起之前在引擎组写的rank插件,静态分+动态分的实现模型,其中的动态分数就是使用的proximity信息。而静态分一般都使用TFIDF或者BM25来事先算好(用TFIDF或者BM25事先计算好倒排表的term与文档之间的静态分)。
而关于proximity,论文中提到了5种常用的方法,一般实际使用中,还可以考虑query term的顺序问题。
论文的5种方法中MinCover的计算不是很直观,但是论文给出了一种线性的计算方法,考虑query term长度K,文档长度N,一般来说N>>K,由于K很小,所以这样方法相当于N的线性,具体的计算方法可以参看论文。
An Exploration of Proximity Measures in Information Retrieval