龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

Spring.net整合全文检索Lucene.net的方法(附例子)(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
二、 集成环境配置 修改web.config,进行Spring.net和nHibernate.Search的配置: Code [http://www.xueit.com] 二、集成环境配置修改web.config,进行Spring.net和nHibernate.Searc

二、集成环境配置

修改web.config,进行Spring.net和nHibernate.Search的配置:

Code [http://www.xueit.com]
二、集成环境配置


修改web.config,进行Spring.net和nHibernate.Search的配置:


<configSections>
        <sectionGroup name="spring">
            <section name="typeAliases" type="Spring.Context.Support.TypeAliasesSectionHandler, Spring.Core"/>
            <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
            <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
            <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
        </sectionGroup>
        <section name="nhs-configuration" type="NHibernate.Search.Cfg.ConfigurationSectionHandler, NHibernate.Search" requirePermission="false"/>
        <section name="SpringOverrideProperty" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<SpringOverrideProperty>
        <add key="DbProvider.ConnectionString" value="Data Source=(local);Database=LuceneDemo;User ID=sa;Password=system;Trusted_Connection=False"/>
        <add key="SystemInit.IsDebug" value="true"/>
        <add key="SystemInit.Level" value="4"/>
    </SpringOverrideProperty>
    <!--nHibernate.Search-->
    <nhs-configuration xmlns="urn:nhs-configuration-1.0">
        <search-factory sessionFactoryName="NHibernateSessionFactory">
            <property name="hibernate.search.default.directory_provider">
                NHibernate.Search.Store.FSDirectoryProvider,NHibernate.Search
            </property>
            <property name="hibernate.search.default.indexBase">~/Index</property>
            <property name="hibernate.search.default.indexBase.create">true</property>
        </search-factory>
    </nhs-configuration>
    <!-- Spirng.Net 配置 -->
    <spring>
        <parsers>
            <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
            <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
        </parsers>
        <context>
            <resource uri="config://spring/objects"/>
            <resource uri="~/config/appDaoContext.xml"/>
            <resource uri="~/config/business.xml"/>
            <resource uri="~/config/controllers.xml"/>
            <resource uri="~/config/pageConfig.xml"/>
            <resource uri="~/config/serviceConfig.xml"/>
        </context>
        <objects xmlns="http://www.springframework.net"/>
    </spring>

 此处的"hibernate.search.default.indexBase"值"~/Index"可以更改为您希望的目录名称。这里的意义在于,当监控到数据变化时,会将索引变化写入到"~/Index/实体名/“。

在nHibernate 2.0中,加入了对数据库事件的监控,在配置文件中,给集成环境中的SessionFactory加上"EventListeners" 属性,便可轻松捕捉到诸如Insert、Update、Delete等事件,交由nHibernate.Search进行索引处理:

Code [http://www.xueit.com]
 此处的"hibernate.search.default.indexBase""~/Index"可以更改为您希望的目录名称。这里的意义在于,当监控到数据变化时,会将索引变化写入到"~/Index/实体名/“。

在nHibernate 2.0中,加入了对数据库事件的监控,在配置文件中,给集成环境中的SessionFactory加上"EventListeners" 属性,便可轻松捕捉到诸如Insert、Update、Delete等事件,交由nHibernate.Search进行索引处理:


    <!--SessionFactory对象,其中包括一些比较重要的属性 -->
    <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate20">
        <property name="DbProvider" ref="DbProvider"/>
        <property name="MappingAssemblies">
            <list>                
                <value>lucenedemo.model</value>
            </list>
        </property>
        <property name="HibernateProperties">
            <dictionary>
                <entry key="hibernate.connection.provider"
                       value="NHibernate.Connection.DriverConnectionProvider"/>
                <entry key="dialect"
                       value="NHibernate.Dialect.MsSql2000Dialect"/>
                <entry key="hibernate.connection.driver_class"
                       value="NHibernate.Driver.SqlClientDriver"/>
                <entry key="show_sql" value="false" />
                <entry key="hibernate.current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate20"/>
                <entry key="hibernate.query.factory_class" value="NHibernate.Hql.Classic.ClassicQueryTranslatorFactory" />
                <entry key="cache.provider_class" value="NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache" />
                <entry key="relativeExpiration" value="5" />
                <!--2.显式启用二级缓存-->
                <entry key="cache.use_second_level_cache" value="true"/>
                <!--4.启动查询缓存-->
                <entry key="cache.use_query_cache" value="true"/>
                <entry key='hibernate.search.default.directory_provider' value='NHibernate.Search.Store.FSDirectoryProvider,NHibernate.Search' />
                <entry key='hibernate.search.default.indexBase' value='~/Index'/>
                <entry key='hibernate.search.default.indexBase.create' value='true' />
            </dictionary>
        </property>
        <property name="ExposeTransactionAwareSessionFactory" value="true" />
        <!--events-->
        <property name="EventListeners">
            <dictionary>
                <entry key="PostInsert">
                    <object type="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
                </entry>
                <entry key="PostUpdate">
                    <object type="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
                </entry>
                <entry key="PostDelete">
                    <object type="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
                </entry>
            </dictionary>
        </property>  
    </object>


精彩图集

赞助商链接