2012-07-19 99 views

回答

7

我想你可以建立自己的SynonymFilterFactory扩展原有的和使用您的自定义FSTSynonymFilterFactory作为委托人。 您SynonymFilterFactory应该扩展了原有的SlowSynonymFilterFactory,并呼吁:

map = loadSolrSynonyms(loader, true, analyzer); 

,每当你想重新加载同义词文件。

当你的文件发生改变时,你可以使用一个看门狗线程来唤醒每X时间,并检查sysnonim文件是否被修改,或者你可以使用一些file watcher来获得更改文件时的通知。

+0

谢恩:谢谢你的答复... 你可以给我例子如何编写自定义事实和如何在scheme.xml中使用它? 给我一些链接引用...如果你有。 我是新来的Solr我没有好主意。 – 2012-07-19 08:58:26

+1

当然:http://java.dzone.com/news/writing-solr-analysis-filter – shem 2012-07-19 09:31:30

+0

谢谢@Shem ... 它可以帮助我很多.. – 2012-07-19 10:05:50

0

Solr的提供Managed Synonym Graph Filter(经由/solr/collection_name/schema/analysis/synonyms/english端点在本例中)来管理使用REST API同义词:申请同义词变化需要

<analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english"/> 
    <filter class="solr.FlattenGraphFilterFactory"/> <!-- required on index analyzers after graph filters --> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english"/> 
</analyzer> 

的芯重新装载。 Solr的提供了一个REST API为这个太CoreAdmin API Reloadadmin/cores?action=RELOAD&core=core-name

的RELOAD动作加载从现有的,已注册的Solr核心的配置的新核心。新核心正在初始化时,现有核心将继续处理请求。当新的Solr内核准备好时,它接管并卸载旧的内核。

相关问题