Возможности полнотекстового поиска в terrasoft 3.4 и MSSQL-2012
Здравствуйте!
подскажите пожалуйтста, можно ли использовать возможности полнотекстового поиска mssql2012 в террасофт 3.4 ?
Или может быть есть идеи или готовые решения как это реализовать.
Нужно например в разделе Контакты искать полнотекстовым поиском контакты с определенными словами в описании. Т.е. допустим есть форма поиска и при введении первых букв слова или фразы, система находит совпадения по вхождению (и например выводит их в стандартном окне справочника).
Нравится
Здравствуйте!
Для организации полнотекстового поиска mssql2012 в Terrasoft 3.4 можете создать свой кастомный запрос который подключите в своем справочнике. Если у Вас уже настроен справочник, то можете добавить кастомное условие и использовать его для фильтрации.
Павел, спасибо!
а можно подробней про кастомное условие и использование его в фильтрации,
не совсем понял мысль
Приведу пример на Контрагентах.
Здравствуйте!
Приведу пример готового решения поиска.
1. В sql пишем функцию, которая выполняет поиск:
GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create function [dbo].[tsf_GetContactIDsPr](@CONTAINSText nvarchar(255)) returns @Result table(ID uniqueidentifier) as begin set @CONTAINSText = rtrim(ltrim(@CONTAINSText)); set @CONTAINSText = @CONTAINSText + '*'; set @CONTAINSText = '"' + @CONTAINSText + '"'; insert into @Result select ID FROM [dbo].[tbl_Contact] AS [tbl_ Contact] WHERE (CONTAINS([tbl_ Contact].[Description], @CONTAINSText)) end return End
2. В Террасофт в sq_Contact добавляем пользовательский sql-фильтр
3. В фильтре прописываем вызов функции
Exists ( select * from dbo.tsf_GetFileIDsCONTAINSVarious(:DescripWords) b where b.ID = [tbl_Files].[ID] )
4. Сохраняем изменения в сервисе.
5. Активируем фильтр
var DescripWords =edtSearch.Value; //поле поиска if (!IsEmptyValue(DescripWords)) { ApplyDatasetFilter(Dataset, DescripWordsFilters, DescripWords, true); }