texto tablas full ejemplos ejemplo coincidencias campo buscar linq-to-sql full-text-search

linq-to-sql - tablas - linq like c#



LinqToSql y búsqueda de texto completo: ¿se puede hacer? (2)

Lamentablemente, LINQ to SQL no es compatible con Full Text Search.

Hay un montón de productos que creo que podrían: Lucene.NET, NHibernate Search me viene a la mente. LINQ para NHibernate combinado con NHibernate Search probablemente le daría esa funcionalidad, pero ambos aún son muy profundos en beta.

¿Alguien ha ideado una buena forma de realizar búsquedas de texto completo ( FREETEXT() CONTAINS() ) para cualquier número de palabras clave arbitrarias utilizando la sintaxis estándar de la consulta LinqToSql?

Obviamente, me gustaría evitar tener que usar un Stored Proc o generar una llamada de SQL dinámico.

Obviamente, podría simplemente bombear la cadena de búsqueda en un parámetro a un SPROC que usa FREETEXT () o CONTAINS (), pero esperaba ser más creativo con las consultas de búsqueda y compilación como:

"pizza de pepperoni" y hamburguesa, no "tarta de manzana".

Loco, lo sé, pero ¿no sería estupendo poder hacer esto directamente desde LinqToSql? Cualquier consejo sobre cómo lograr esto sería muy apreciado.

Actualización: creo que puedo estar en algo aquí ...

Además: remonté el cambio realizado en el título de mi pregunta porque realmente cambió el significado de lo que estaba preguntando. que la búsqueda de texto no es compatible con LinqToSql. Hubiera preguntado si quería saber eso. En su lugar, he actualizado mi título para apaciguar las masas edit-happy-trigger-fingers.


Me las he arreglado para evitar esto al usar una función de valor de tabla para encapsular el componente de búsqueda de texto completo, luego lo hice referencia dentro de mi expresión LINQ manteniendo los beneficios de la ejecución retrasada:

string q = query.Query; IQueryable<Story> stories = ActiveStories .Join(tvf_SearchStories(q), o => o.StoryId, i => i.StoryId, (o,i) => o) .Where (s => (query.CategoryIds.Contains(s.CategoryId)) && /* time frame filter */ (s.PostedOn >= (query.Start ?? SqlDateTime.MinValue.Value)) && (s.PostedOn <= (query.End ?? SqlDateTime.MaxValue.Value)));

Aquí ''tvf_SearchStories'' es la función de tabla de valores que internamente utiliza la búsqueda de texto completo