Я предполагаю, что вы хотите И два поиска вместе.Например, найдите все документы, содержащие текст «foo» И в категории «Ремонт автомобилей».
Возможно, вам не требуется полнотекстовый ввод дополнительных данных, и вы можете просто использовать = или подобное?Если дополнительные данные достаточно малы, это может не оправдать сложность полного текста.
Однако, если вы хотите использовать полный текст для обоих, используйте хранимую процедуру, которая объединяет результаты для вас.Хитрость здесь в том, чтобы ставить результаты, а не пытаться вернуть результат сразу.
Это грубая отправная точка.
-- a staging table variable for the document results
declare @documentResults table (
Id int,
Rank int
)
insert into @documentResults
select d.Id, results.[rank]
from containstable (documents, (text), '"foo*"') results
inner join documents d on results.[key] = d.Id
-- now you have all of the primary keys that match the search criteria
-- whittle this list down to only include keys that are in the correct categories
-- a staging table variable for each the metadata results
declare @categories table (
Id int
)
insert into @categories
select results.[KEY]
from containstable (Categories, (Category), '"Automotive Repair*"') results
declare @topics table (
Id int
)
insert into @topics
select results.[KEY]
from containstable (Topics, (Topic), '"Automotive Repair*"') results
declare @areas table (
Id int
)
insert into @areas
select results.[KEY]
from containstable (Areas, (Area), '"Automotive Repair*"') results
select d.text, c.category, t.topic, a.area
from @results r
inner join documents d on d.Id = r.Id
inner join @categories c on c.Id = d.CategoryId
inner join @topics t on t.Id = d.TopicId
inner join @areas a on a.Id = d.AreaId