Запрос NHibernate для получения объектов со свойствами, соответствующими строковым частям - PullRequest
4 голосов
/ 11 марта 2012

У меня есть класс Person со следующими свойствами:

public class Person
{
  public string LastName { get; set; }
  public string FirstName{ get; set; }
  public string SecondName { get; set; }
  public string Position { get; set; }
}

Пользователю предоставляется окно поиска, в которое он может ввести строку, разделенную пробелами.Задача состоит в том, чтобы запросить из БД всех людей, у которых есть какое-либо свойство, равное любой части введенной строки (части - это подстроки, разделенные пробелами).Самое простое решение - ИЛИ все возможные комбинации.Но, на мой взгляд, это не так.Есть ли более элегантные решения?
Заранее спасибо.

1 Ответ

2 голосов
/ 11 марта 2012

Мой ответ начинается с определения What does elegant mean?

Существуют такие решения, как: -

  1. Создание вычисляемого столбца в базе данных [FirstName] + N '' +[Фамилия] + N '' + [SecondName] и т. Д. Тогда вам нужно только OR подстроки, основанные на вычисляемом столбце - это элегантно / более производительно?Я, например, не так уверен.
  2. Создать FREETEXTABLE См. MSDN для получения дополнительной информации.Опять же, вам нужно только OR для каждой подстроки (на основе SARCH-TEXT-сервера SQL).
  3. Реализовать индекс LUCENE для всех столбцов, см. this .Однако нужно подумать о проблемах синхронизации с базой данных, а также вам нужно будет изучить новый фреймворк, НО поиск определенно более элегантен для ИМО.
  4. Оставайтесь с тем, что у вас есть.

То, что вы решаете, зависит от вас, но у 1-3 есть разные проблемы с тем, что у вас есть в данный момент, что не очень элегантно, но это просто и, скорее всего, работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...