Melhores práticas para criar um aplicativo de pesquisa?

Iniciarei um projeto simples de armazenamento de dados e pesquisa em breve. Basicamente, um deles "coloca minha enorme planilha do Excel em um banco de dados, cria uma GUI da Web para ela e torna possível pesquisar" coisas do tipo pesquisável.

Uma coisa que me incomoda é a lógica de pesquisa real que será usada quando o usuário inserir alguns critérios. Estou imaginando uma interface de pesquisa com um campo de texto e algumas outras ferramentas de filtragem - caixas de combinação suspensas, caixas de seleção e coisas assi

Enquanto isso me dá um controle granular muito forte sobre a filtragem que posso executar, estou me perguntando quais são os pensamentos de SO sobre realmente executar a pesquisa. Vou usar o ASP.NET, o MS SQL Server e o Linq-To-SQL aqui, então lembre-se dessas tecnologias.

No topo da minha cabeça, acho que faria algo como:

var results = from s in db.Stuff
              where (s.Prop1.Contains(textFilter) ||
                     s.Prop2.Contains(textFilter) ||
                     s.Prop3.Contains(textFilter)) &&
                     checkbox1.IsChecked ?
                          s.Prop4.ToLower().Equals(combobox1.Text) : true
              select s;

Aqui está o que eu sei:

Como fazer agrupamentos e junções, se necessárioEu posso usar oContains () nas propriedades individuais para gerar SQLGOSTA consultas Eu posso filtrar as coisas propriedade por propriedade, construindo minha lógica de pesquisa como acim

Aqui está o que eu estou perguntando:

Existe uma maneira de pesquisar todas as propriedades (sem puxar todos os objetos para a memória - o que eu suponho que significa construir uma lista das propriedades de cada objeto com reflexão, especificá-las e depois verificar se está fora)? Caso contrário, isso parece incrivelmente complicado, pois eu teria que criar uma nova lógica para cada nova propriedade que eu pudesse adicionar. Algo como s.Contains (textFilter) no exemplo acima seria ideal.Como é que um SQLGOSTA consulta realmente funciona? É algo que eu quero fazer? Existe uma maneira padrão de implementar regras de pesquisa, como seqüências de caracteres entre aspas, para operadores lógicos e de correspondência completa, como eO? Eu ficaria surpreso se todos os aplicativos que os implementassem o fizessem com lógica de análise personalizad Estou latindo na árvore errada? Perdi algo

questionAnswers(6)

yourAnswerToTheQuestion