2013-05-26 47 views
2

我正在将项目从solr转换为cloudsearch,并且遇到了一个问题,因为在搜索了doc和web之后,我无法找到解决方法。我希望别人能帮助。根据输入条件的频率提升云搜索结果

我无法描述真实的细节,但我能找到的最接近的例子是剽窃检测。想象一下,将一堆发布的文档加载到cloudsearch中,然后以业余文档作为查询来查看是否匹配。

给定一个索引文件 - 维基百科说的暴龙页:

像其他暴龙,霸王龙是两足食肉动物与 由一个长,重尾平衡了大规模的头骨。

然后来了业余文档:

我是一个食肉动物,和我喜欢的暴龙,因为他是一个两足食肉动物,太。

对于那些重要项目的原因,我创建的有趣的词分布,而不是完整的文本查询,如:

carnivore: 2 
tyrannosaurus: 1 

而且我想给在维基百科文章中发现“肉食动物”这个词更偏向于“暴龙”。

在solr中,我使用“^”运算符(例如, “食肉动物^ 2”。

从我所能找到的,cloudsearch确实提升为“排名表达式”,但我还没有发现任何类似于我的问题。

任何想法?

回答

1

寻找Zipf定律(也有类似的称为Zipf-Mandelbrot定律但更难实现)基本上,对任何语言(特别是在每个特定领域)来说,词频的分布服从于Zipfs发行。您可以创建一个词频列表,将其排序以适应zipf分布,从中您可以调整分布的参数并推断术语相关性。

根据你的问题,我明白你正在实施某种td-idf,这比这更先进。不幸的是,我认为你的问题更多的是出于计算机科学/语言学问题,它需要比我在这篇文章中写的更多的解释。

我不使用cloudsearch(我在自然语言处理项目工作过,但我不使用cloudsearch),但检查周围,我发现这个http://docs.aws.amazon.com/cloudsearch/latest/developerguide/rankexpressions.html

你可以建设齐普夫分布(或任何定制/它的味道)与这些操作数,并为您的排名定义一个门槛。

这不是一个“干净的代码”的答案,但我希望它会帮助你。

+0

感谢您的回复,并指向一些术语。不幸的是,一切都表明,排名表达式需要现有的领域进行操作,所以我不能根据输入频率调整分数。我仍然很惊讶Solr可以做一些云端搜索看起来不能做的事情,并且没有其他人正在讨论它......再次感谢。 –