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>();   
} 
+0

这看起来不错... – Fanda 2013-09-07 17:05:03