Necesito buscar entre varias columnas de dos tablas en mi base de datos usando Búsqueda de texto completo. Las dos tablas en cuestión tienen indexadas las columnas relevantes de texto completo.Uso de la búsqueda de texto completo en SQL Server 2008 en varias tablas, columnas
La razón por la que estoy optando por la búsqueda de texto completo: 1. Ser capaz de buscar palabras con acento fácilmente (CAFE) 2. Ser capaz de clasificar de acuerdo a la proximidad de textos, etc. 3. "Did ¿Te refieres a XXX? funcionalidad
Aquí es una estructura de tabla ficticia, para ilustrar el desafío:
Table Book BookID Name (Full-text indexed) Notes (Full-text indexed) Table Shelf ShelfID BookID Table ShelfAuthor AuthorID ShelfID Table Author AuthorID Name (Full-text indexed)
tengo que buscar a través de Nombre de libro, Notas de libro y el nombre del autor.
Conozco dos maneras de lograr esto:
El uso de un índice de texto completo Ver: Esto habría sido mi método preferido, pero no puedo hacer esto porque para una vista para ser indexado en texto completo, necesita ser enlazado, no tener ninguna unión externa, tener un índice único. La vista que necesitaré para obtener mis datos no cumple estas restricciones (contiene muchas otras tablas unidas de las que necesito obtener datos).
Usando join en un procedimiento almacenado: El problema con este enfoque es que necesito tener los resultados ordenados por rango. Si estoy realizando varias uniones en las tablas, SQL Server no buscará en múltiples campos de forma predeterminada. Puedo combinar dos consultas CONTAINS individuales en las dos tablas vinculadas, pero no sé de una manera de extraer el rango combinado de las dos consultas de búsqueda. Por ejemplo, si busco 'Arthur', los resultados tanto de la consulta del libro como de la consulta del autor deben tenerse en cuenta y ponderarse en consecuencia.
Para el n. ° 1, donde dices que te estás uniendo ... ¿realmente eres EXTRAORDINARIO? eso es un producto cartesiano y dudo que realmente lo estés haciendo. Una unión interna o izquierda/derecha está bien. –
No estoy usando una OUTER JOIN para ninguna de las tablas mostradas. Hay otras tablas que necesito para IZQUIERDA OUTER JOIN, porque es posible que no tengan ninguna fila FKed. –