我有一个社交网络设置,并通过一个api,我想搜索条目。社交网络的数据库是mysql。我希望搜索返回以下格式的结果:与查询匹配并且是执行搜索的用户的朋友的结果应该优先于简单匹配查询的结果。
那么,这可以在一个查询中完成吗?或者我必须执行两个单独的查询,然后合并结果并删除重复项?
我可能会使用Lucene建立一个数据结构,并高效地搜索该索引,但我想知道每次创建新关系时更新文档的惩罚是否会太大?
谢谢
发布于 2009-11-23 23:21:03
一种方法是将你所有的社交网络图与Lucene分开存储。在Lucene上运行关键字查询,同时查找网络图中的所有朋友。对于所有返回的朋友,通过一些因素和手段提高所有这些朋友的搜索结果。这种重新排序将在Lucene之外完成。我以前做过这样的事情,它表现得很好。
您还可以创建一个自定义的HitCollector,它在Lucene中收集命中数据时执行升压。您必须构造一个属于当前用户的朋友的内部Lucene ID列表。
你的社交网络图可以存储在Mysql中,以稀疏邻接矩阵的形式存储在内存中,或者你也可以看看Neo4j。
https://stackoverflow.com/questions/1779954
复制相似问题