【发布时间】:2013-02-14 07:43:08
【问题描述】:
我创建了全文目录并尝试创建全文索引,但我尝试过的任何方法都失败了。好吧,我联系了我的网络托管支持以寻求帮助,并了解到他们尚未安装该功能。
现在我应该以某种方式模拟全文搜索。我想要做的是,在文本中搜索多个单词。我知道一些方法,但性能是我关心的问题。
select *
from messages
where msgbody like '%word1%'
and msgbody like '%word2%'
and ...
and msgbody like '%wordn%'
我想到的另一种方法(因为我的搜索只有and类型而没有or)是搜索一个单词,然后在第一次搜索和第三次搜索的结果中搜索第二个单词第二次搜索的结果等等。但这看起来也不是一个好的选择。
【问题讨论】:
-
由于您使用
LIKE '%.....%'进行搜索 - 性能将非常糟糕,因为 SQL Server 将无法使用任何可能存在的索引...... -
@marc_s 这正是我寻找另一种方式的原因。我想到的另一种方法(因为我的搜索只是并且输入不是或)是搜索一个单词,然后在第一次搜索的结果中搜索第二个单词,在第二次搜索的结果中搜索第三次搜索,依此类推。但这看起来也不是一个好的选择
-
如果
like '%word1%'糟糕到无法接受,并且您无法安装 FTS 或移动到已安装它的主机上,那么您需要通过解析各个单词并索引这些单词来推出自己的messageid. -
@MartinSmith 能否提供代码,我该怎么做?
-
@AshkanMobayenKhiabani - 没有任何方便。我似乎记得 Dot Net Nuke 做了类似的事情。
标签: sql-server full-text-search