如何索引论坛讨论搜索?

时间:2010-09-21 15:15:48

标签: asp.net search full-text-search lucene lucene.net

对于讨论论坛,将讨论线程中的每个条目索引为单独的lucene文档或简单地将讨论中的所有条目编入一个大块文本并将整个讨论线程索引为单个lucene文档更好吗? ?

4 个答案:

答案 0 :(得分:1)

取决于您正在寻找什么样的搜索功能。例如,如果您希望用户能够搜索某个特定日期的线程中出现的关键字,那么您必须将所有条目编入索引作为具有日期的单独文档(使用{{3进行NumericField搜索}})。

将每个条目索引为单独的文档还将使您能够使用Lucene记分器对每个条目进行评分,这将有助于检索最相关的条目(而不是线程)作为对查询的响应。此外,您还可以将线程主题作为单独的字段添加到每个条目文档中(以更多空间为代价)。

如果要将用户指向感兴趣的确切条目,则连接所有条目并不是一个好主意。 至于你关注(评论Ryan的答案)关于从同一个线程返回多个条目,你可以在索引时为每个条目添加一个线程id。然后在显示结果时,您只能显示每个线程ID的条目(具有最高分数的条目可以与线程主题一起显示)

答案 1 :(得分:0)

如果您连接讨论中的所有条目,则会遇到错误,您无法确定要检索的确切条目。

Lucene应该能够快速索引和搜索每个条目(post / thread / whatever)。将它们全部混合起来似乎有点矫枉过正。

答案 2 :(得分:0)

如果您决定单独索引它们,可以使用Solr,它将支持搜索结果折叠:

http://www.lucidimagination.com/blog/2010/09/16/2446/

答案 3 :(得分:0)

我更愿意单独索引每个条目。它将使设计更加灵活,因为您的系统应该有某种主题实体来对同一线程中的条目进行分组。另一个使用连接索引的问题是,一旦发布了具有性能影响的新条目,就需要重新编制索引。