NHibernate全文搜索
问题描述:
试图使用nhibernate获取文本搜索功能的最佳方式是什么?我已阅读关于NHibernate.Search,但无法找到任何地方的图书馆。NHibernate全文搜索
我下载了最新的NHibernate源代码(2.1.2)并编译了它,但是我仍然无法找到NHibernate.Search。
有没有人有任何建议?或者其他任何方法来做文本搜索?
编辑:使用MySQL数据库,incase它有任何区别。
答
NHiberante.Search一个单独的DLL,使Nhiberante和Lucene一起工作。如果你想使用它,你必须下载并引用它。您可能想阅读关于Lucene的一些介绍,以了解Nhiberante.Search的工作原理。
其中一个地方,你可以得到的dll是hornget
如果你想MySQL的具体全文搜索选项,不会有从NHibernate的任何帮助你使用它们。
答
您可以使用Expression.Sql,但我认为这是好主意,用mysql存储过程
你的MySQL存储过程:
CREATE PROCEDURE `GetProductsByText`(IN `queryText` VARCHAR(100) CHARSET utf8)
SELECT *
FROM Products
WHERE MATCH(Title, Description) AGAINST (queryText)
你的NHibernate映射的XML文件:
<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>();
}
这看起来不错... – Fanda 2013-09-07 17:05:03