gpt4 book ai didi

sql-server - 如何同时使用 SQL Server 跨多行全文搜索?

转载 作者:行者123 更新时间:2023-12-02 21:15:52 25 4
gpt4 key购买 nike

我正在尝试改进网络论坛的搜索功能。我有一个帖子表,每个帖子都有(以及其他不太有趣的东西):

  • PostID,单个帖子的唯一 ID。
  • ThreadID,帖子所属线程的 ID。每个线程可以有任意数量的帖子。
  • 文本,因为如果没有它,论坛就会变得非常无聊。

我想编写一个高效的查询,该查询将在论坛中的线程中搜索一系列单词,并且它应该返回任何包含所有搜索单词的帖子的 ThreadID 的匹配结果。例如,假设线程 9 发布了包含单词“cat”的帖子 1001,并且发布了包含单词“hat”的帖子 1027。我想要搜索 cat hat 以返回线程 9 的匹配结果。

这似乎是一个简单的要求,但我不知道有什么有效的方法来做到这一点。在上面的示例中,对 N'cat AND hat' 使用常规 FREETEXT 和 CONTAINS 功能不会返回任何命中,因为这些单词存在于不同的帖子中,即使这些帖子位于同一线程中。 (据我所知,当使用 CREATE FULLTEXT INDEX 时,我必须在主键 PostID 上为其提供索引,并且不能告诉它将具有相同 ThreadID 的所有帖子一起索引。)

我目前采用的解决方案有效,但很糟糕:维护一个单独的表,其中包含每个线程的整个串联帖子文本,并在其上创建全文索引。我正在寻找一种解决方案,不需要我保留论坛中每个线程的整个文本的副本。有任何想法吗?我是否遗漏了一些明显的东西?

最佳答案

据我所知,没有“简单”的方法可以做到这一点。

我将创建一个存储过程,它简单地拆分搜索词并开始查找第一个词并将 threadid 放入表变量中。然后在刚刚收集的 threadid 中查找其他单词(如果有)(内连接)。

如果有兴趣,我可以编写一些代码,但我猜你不会需要它。

关于sql-server - 如何同时使用 SQL Server 跨多行全文搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com