给定一个任意的全文搜索 (FTS) 查询,需要从结果文档中列出与查询匹配的关键字。例如,test or rest
生成 3 个文档的列表,其中第一个仅包含test
,第二个包含两个单词,第三个仅包含rest
。解释应该产生 3 个列表: ( test
) ( test
, rest
) ( rest
) 以便最终用户了解文档出现在查询输出中的原因。
这个问题与命中突出显示有关,我已经探索了现有的解决方案(例如http://www.codeproject.com/Articles/623815/Hit-Highlight-for-SQL-Server-Full-Text-Search或如何做来自 SQL Server 全文查询的结果的高亮显示)。这些解决方案依赖于sys.dm_fts_parser
硬编码FORMSOF (INFLECTIONAL
来产生搜索词的所有排列。
特别是,依赖的解决方案sys.dm_fts_parser
似乎偶然发现了前缀搜索。例如,给定 2 个查询test
并"test*"
select content from table where contains(content, @query, language 1033)
生成不同的结果集,但会select * from sys.dm_fts_parser(@query, 1033, 0, 1)
生成 2 个完全相同的记录集,这没有提供任何关于查询输出为何不同的线索。
有人有类似案例的经验吗?