Sql server 针对全文索引的混合查询

Sql server 针对全文索引的混合查询,sql-server,full-text-search,sql-server-2012,full-text-indexing,Sql Server,Full Text Search,Sql Server 2012,Full Text Indexing,我正在使用SQL Server 2012。表有一个文本和一个日期列。文本列具有全文索引。查询问题在全文列中包含,但在日期列中还需要包含大于条件。我担心SQL Server合并来自b树和全文索引的结果的性能 在Oracle中,通过将“普通”列(不受全文搜索约束)包含到全文索引(CTXCAT)中来解决此场景的性能问题,因此可以设置如下全文索引: ctx_ddl.create_index_set('auction_set'); ctx_ddl.add_index ('auction_set

我正在使用SQL Server 2012。表有一个文本和一个日期列。文本列具有全文索引。查询问题在全文列中包含,但在日期列中还需要包含大于条件。我担心SQL Server合并来自b树和全文索引的结果的性能

在Oracle中,通过将“普通”列(不受全文搜索约束)包含到全文索引(CTXCAT)中来解决此场景的性能问题,因此可以设置如下全文索引:

ctx_ddl.create_index_set('auction_set');
ctx_ddl.add_index       ('auction_set', 'start_date');
WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"', 'start_date > ###') > 0
然后像这样询问:

ctx_ddl.create_index_set('auction_set');
ctx_ddl.add_index       ('auction_set', 'start_date');
WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"', 'start_date > ###') > 0
在SQL Server中是否可以将b树索引合并为全文索引

解决SQL Server中混合(全文和b树)查询场景的最有效方法是什么


谢谢。

如果我正确理解你的问题,我认为你不应该遇到任何问题。我经常把全文和b-树结合起来,结果很好。在进行全文搜索时,它会将每个分隔的“术语”作为索引进行查找,就像只包含一个术语的索引列一样(提供或获取一些sql统计信息)。无论如何,SQL都必须找出它的执行路径。全文搜索不支持比较整数/日期值——更多的是用于匹配分隔数据的字符串

我想你会想继续利用b-树概念的效率来为你带来好处。在我看来,全文目录索引搜索是一种更加全面的搜索,尽管在使用“LIKE”解析/比较字符串的情况下更为有利

我所做的是:

 SELECT * FROM MyTable
  WHERE CONTAINS(columnName, '"Toy Dog" OR "live animal"')
    AND start_date > ###;
(见附件)

另外,当全文索引整型数据时,请关闭停止列表,以便在目录索引中不会忽略这些值

希望这些都有帮助!(没有人回答,所以我想我会给出我的经验)