2024-06-07 15:33:02 发布
网友
在我当前的项目中,用户可以like首歌曲,现在我将添加一个歌曲搜索,这样用户就可以搜索她以前liked的歌曲。你知道吗
like
liked
我以前使用xapian实现过搜索引擎,它涉及定期构建文档索引。你知道吗
xapian
在我的例子中,我必须独立地为每个用户的歌曲建立索引吗?你知道吗
如果我希望搜索结果更加real-time,这是否意味着我需要每隔很短的时间增量地构建索引?你知道吗
real-time
单独回答你的问题。你知道吗
不,这种情况下的一种常见技术是分别用歌曲的信息和用户的标识符对每个like进行索引。然后,当您搜索时,您希望根据实际登录的用户标识符过滤用户自然文本搜索的结果。你知道吗
在Xapian中,您可以添加一个表示用户的术语(带有合适的前缀,因此对于id为175的用户,您可能有XU175),然后使用OP_FILTER将搜索限制为登录用户的喜欢。你知道吗
XU175
OP_FILTER
这完全取决于您使用的搜索系统。使用Xapian,您可以这样做,并定期将生成的数据库“压缩”到一个基本数据库中;或者您可以将实时索引到数据库中,尽管Xapian是一个编写器,您需要找到一种序列化方法,例如,将新的like放入一个队列中,并有一个进程将它们弹出并将索引放入数据库。一个基本上现成的解决方案是使用Restpose,它由一个Xapian开发人员编写,与Solr对Lucene所起的作用相同。你知道吗
您还可以通过索引到一个数据库中,然后将其复制到另一个数据库并搜索复制的版本来获得更高级的功能,这也为您提供了将来水平扩展的选项。在Xapian文档中有一个discussion of replication。你知道吗
单独回答你的问题。你知道吗
我必须独立地为每个用户的歌曲建立索引吗?你知道吗
不,这种情况下的一种常见技术是分别用歌曲的信息和用户的标识符对每个
like
进行索引。然后,当您搜索时,您希望根据实际登录的用户标识符过滤用户自然文本搜索的结果。你知道吗在Xapian中,您可以添加一个表示用户的术语(带有合适的前缀,因此对于id为175的用户,您可能有
XU175
),然后使用OP_FILTER
将搜索限制为登录用户的喜欢。你知道吗我是否需要每隔很短的时间增量构建索引[以支持实时索引]?你知道吗
这完全取决于您使用的搜索系统。使用Xapian,您可以这样做,并定期将生成的数据库“压缩”到一个基本数据库中;或者您可以将实时索引到数据库中,尽管Xapian是一个编写器,您需要找到一种序列化方法,例如,将新的like放入一个队列中,并有一个进程将它们弹出并将索引放入数据库。一个基本上现成的解决方案是使用Restpose,它由一个Xapian开发人员编写,与Solr对Lucene所起的作用相同。你知道吗
您还可以通过索引到一个数据库中,然后将其复制到另一个数据库并搜索复制的版本来获得更高级的功能,这也为您提供了将来水平扩展的选项。在Xapian文档中有一个discussion of replication。你知道吗
相关问题 更多 >
编程相关推荐