Lucene查询——连接文档并保持相关性

Lucene查询——连接文档并保持相关性,lucene,full-text-search,Lucene,Full Text Search,我正在尝试创建一个Lucene搜索,使用学校名称和玩家名称返回视频。我正试图在两种方法之间做出选择 方法A是索引视频文档上的学校名称和播放器名称,并使用布尔查询来搜索这些字段 方法B是创建单独的文档类型并进行3次唯一查询 文件: 学校文档-存储学校id并索引学校名称 玩家文档-存储学校id和运动id以及索引 玩家姓名 这3个问题: 搜索具有学校名称的所有学校文档 搜索具有玩家名称的所有玩家文档 在视频中搜索前两个查询中具有school_id和sport_id的所有内容 这两种方法的优缺点是什

我正在尝试创建一个Lucene搜索,使用学校名称和玩家名称返回视频。我正试图在两种方法之间做出选择

方法A是索引视频文档上的学校名称和播放器名称,并使用布尔查询来搜索这些字段

方法B是创建单独的文档类型并进行3次唯一查询

文件:

  • 学校文档-存储学校id并索引学校名称
  • 玩家文档-存储学校id和运动id以及索引 玩家姓名
这3个问题:

  • 搜索具有学校名称的所有学校文档
  • 搜索具有玩家名称的所有玩家文档
  • 在视频中搜索前两个查询中具有school_id和sport_id的所有内容

  • 这两种方法的优缺点是什么?

    你几乎肯定会选择方法A。为了结合两个指数的相关性得分,你必须重新设计Lucene

    不利的一面是,如果学校/球员更改了他们的名字,你必须重新编制索引。但这似乎很不寻常


    请记住,只有在有大量自由文本可供搜索的情况下,Lucene才是真正优秀的。如果只是几个字(比如学校的名字),使用MySQL的自由文本功能或您喜欢的其他rdbms可能也会一样快,并且更容易实现。例如,在重命名时重新编制索引不会有问题。

    您几乎肯定希望使用方法A。为了结合两个索引的相关性得分,您必须重新设计Lucene

    不利的一面是,如果学校/球员更改了他们的名字,你必须重新编制索引。但这似乎很不寻常


    请记住,只有在有大量自由文本可供搜索的情况下,Lucene才是真正优秀的。如果只是几个字(比如学校的名字),使用MySQL的自由文本功能或您喜欢的其他rdbms可能也会一样快,并且更容易实现。例如,重命名时重新编制索引不会有问题。

    方法A是否存在任何性能问题?我有大约100000个视频要索引。@jon077:No.100k是一个非常小的索引,方法a是建议的索引方式。方法a有性能问题吗?我有大约100000个视频要索引。@jon077:No.100k是一个非常小的索引,方法a是建议的方法。