У меня есть что-то вроде следующей таблицы для поиска текста:
SearchedTextTable
Id int primary key
Text nvarchar(max)
Code int
Текст полнотекстовый, поэтому я сделал следующую табличную функцию для работы с LinqToSQL:
ALTER FUNCTION [dbo].[SearchText] (@keywords nvarchar(4000))
returns @results table (Id int not null)
as
begin
INSERT @results
SELECT
Id
from SearchedTextTable
where contains(Text,@keywords)
return;
end;
То, что я хочу сделать, это применить некоторые условия перед поиском текста, например, следующий код:
ПРИМЕЧАНИЕ. Условия на самом деле довольно сложные, поэтому я не хочу помещать их в табличную функцию.
using(var contetxt= new FooDataContext())
{
var list = context.SearchedTextTable.Where(x => x.Code==code);
var results = context.SearchText(list, keywords).ToList();
}
И функция SearchText должна выглядеть следующим образом:
ALTER FUNCTION [dbo].[SearchText] (@table table, @keywords nvarchar(4000))
returns @results table (Id int not null)
as
begin
INSERT @results
SELECT
Id
from @table
where contains(Text,@keywords)
return;
end;
Возможно ли это?Если да, не могли бы вы сказать мне, как?
Заранее спасибо,
Ю
РЕДАКТИРОВАТЬ
После некоторых тестов производительность кажется неЭто ни на что не влияло, даже если я установил некоторые условия перед полнотекстовым поиском.Они оба возвращают менее 10 мс.