Действительно ли возможно использовать Полнотекстовый поиск (FTS) с LINQ?

Если вы печатаете свой список ошибок, он будет внутренне вызывать метод toString() вашего списка, и этот метод добавит скобки. Есть несколько возможностей. Вы можете получить String с помощью метода toString(), чтобы удалить скобки из String. Или вы пишете свой собственный метод для печати списка.

public static <T> void printList(List<T> list)
{
    StringBuilder output = new StringBuilder();
    for(T element : list)
        output.append(element + ", ");
    System.out.println(output);
}
75
задан Glenn Slaven 22 October 2008 в 21:31
поделиться

4 ответа

Да. Однако необходимо создать функцию SQL-сервера сначала и вызов, что, поскольку по умолчанию LINQ будет использовать подобное.

Этот сообщение в блоге , который объяснит деталь, но это - извлечение:

Для получения это работающий Вас должно создать табличную функцию, которая делает не что иное как запрос CONTAINSTABLE на основе ключевых слов, в которых Вы передаете,

create function udf_sessionSearch
      (@keywords nvarchar(4000))
returns table
as
  return (select [SessionId],[rank]
            from containstable(Session,(description,title),@keywords))

Вы тогда добавляете эту функцию к своей модели LINQ 2 SQL, и он престо можно теперь записать запросы как.

    var sessList = from s   in DB.Sessions
                   join fts in DB.udf_sessionSearch(SearchText) 
                   on s.sessionId equals fts.SessionId
                 select s;
76
ответ дан Simon_Weaver 7 November 2019 в 07:22
поделиться

Нет. Полнотекстовый поиск не поддерживается LINQ К SQL.

Однако Вы можете использовать хранимую процедуру, которая использует FTS, и имейте LINQ К данным получения по запросу SQL-запроса из этого.

12
ответ дан p.campbell 7 November 2019 в 07:22
поделиться

Я не верю так. Можно использовать, 'содержит' на поле, но оно только генерирует LIKE запрос. Если бы Вы хотите использовать полный текст, я рекомендовал бы использовать сохраненный proc, чтобы сделать, запрос тогда пасует назад его к LINQ

9
ответ дан Glenn Slaven 7 November 2019 в 07:22
поделиться

Нет, полнотекстовый поиск является чем-то очень характерным для SQL-сервера (в котором текст индексируется словами и запрашивает, поражает этот индекс по сравнению с пересечением символьного массива). Linq не поддерживает это, никакой.Contains (), вызовы поразят неуправляемые строковые функции, но не извлекут выгоду из индексации.

5
ответ дан 7 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: