NHibernate Полнотекстовый поиск - PullRequest
2 голосов
/ 06 августа 2010

Как лучше всего получить функцию текстового поиска с помощью nhibernate?Я читал о NHibernate.Search, но нигде не могу найти библиотеку.

Я скачал последний исходный код NHibernate (2.1.2) и скомпилировал его, но все еще не могу найти NHibernate.Search.

У кого-нибудь есть предложения?Или любые другие методы для текстового поиска?

РЕДАКТИРОВАТЬ: Использование базы данных MySQL, если это имеет какое-либо значение.

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

NHiberante. Найдите отдельную библиотеку, чтобы заставить Nhiberante и Lucene работать вместе.Вы должны скачать и ссылаться на него, если вы хотите его использовать.Возможно, вы захотите прочитать введение о Lucene, чтобы понять, как работает Nhiberante.Search.

Одно из мест, где вы можете получить dll, это: hornget

что касается специфичных для MySql опций полнотекстового поиска, вам не понадобится помощь от Nhibernate.

1 голос
/ 30 сентября 2012

Вы можете использовать Expression.Sql, но я думаю, что это хорошая идея - использовать хранимую процедуру mysql

Ваша хранимая процедура MySql:

CREATE PROCEDURE `GetProductsByText`(IN `queryText` VARCHAR(100) CHARSET utf8)
SELECT *
FROM Products
WHERE MATCH(Title, Description) AGAINST (queryText)

Ваш xml-файл отображения nhibernate:

<sql-query name="GetProductsByText">
<return class="Product"/>
   call `GetProductsByText`( :queryText )
</sql-query>

ваш запрос c # nhibernate:

public IList<Product> FindByText (string text)
{   
    var session = SessionFactory.GetCurrentSession ();
    IQuery query = session.GetNamedQuery ("GetProductsByText");

    return query.SetString ("queryText", text).List<Product> ();        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...