【发布时间】:2013-10-24 04:54:19
【问题描述】:
我正在单列上尝试 MS SQL 全文查询。
为此,我使用“FREETEXTABLE”功能。
当我查询“骑马”时,结果集包含标题包含“骑”字样的视频。
难怪在使用 FREE 或“FREETEXTTABLE”时,会破坏查询字符串
成词,创建屈折词,这就是结果集的生成方式。
所以我的问题是,如果这是过程,为什么结果集没有“马”字所在的视频
存在(我在数据库中有视频,其中视频标题包含“马”字)。
是不是因为分词器偏爱“动词”?
请评论“分词器”和“词干”在英语中的作用。
我可以找到有关“分词器”和“词干”的详细信息的链接也将是 帮助满满。
这对我每次都获得相关结果非常重要。
谢谢。
【问题讨论】:
-
您应该提供有关您的表/查询/索引的更多信息我倾向于拆分搜索字符串并在每个部分上使用
formsof(inflectional,...(结合OR)。见stackoverflow.com/a/4727055/1236044 我也使用containstable(能够通过Ranking desc 对结果进行排序 -
Bellow 是我的 FTS 查询 CREATE PROC [dbo].[USP_Videos_SearchVideos] @searcher varchar(2000) AS SELECT Ranker.RANK, v.ViewCount, v.ID, v.TitleText, v.CategoryId, c.Term, FROM mst_Videos AS v INNER JOIN FREETEXTTABLE(mst_Videos, TitleText, @searcher) AS Ranker ON v.ID = Ranker.[KEY] INNER JOIN mst_Categories AS c ON v.CategoryId = c.ID WHERE RANKER.RANK >= 100 ORDER BY Ranker.RANK DESC, v.ViewCount DESC 您能否建议对上述查询进行任何修改以使其更好,从而获得越来越多的相关结果。
-
或者,如果可能的话,请给我提供链接,我可以在其中找到有关分词器和词干分析器的更多详细信息,谢谢!
标签: sql-server full-text-search