尝试使用nhibernate获取文本搜索功能的最佳方法是什么?我已阅读有关NHibernate.Search的内容,但无法在任何地方找到该库。
我下载了最新的NHibernate源代码(2.1.2)并编译了它,但我仍然找不到NHibernate.Search。
有没有人有任何建议?或者其他任何进行文本搜索的方法?
编辑:使用MySQL数据库,不管它有什么不同。
答案 0 :(得分:2)
NHiberante。搜索一个单独的dll,让Nhiberante和Lucene一起工作。如果要使用它,必须下载并引用它。您可能希望阅读有关Lucene的一些介绍,以了解Nhiberante.Search的工作原理。
您可以获取dll的地方之一是hornget
如果您想要MySql特定的全文搜索选项,Nhibernate将不会为您提供任何帮助。
答案 1 :(得分:1)
您可以使用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> ();
}