我们知道有一个synonym.txt文件在conf目录,这是我想更新时,我发现了一些新的代名词的话...有没有办法在不重新启动Solr服务器的情况下动态更新同义词文件?
那么,有没有办法来更新文件,无需重新启动的Solr服务器并将我的搜索结果考虑为新的同义词?
请帮助我,如果任何人有任何想法..提前 感谢...
我们知道有一个synonym.txt文件在conf目录,这是我想更新时,我发现了一些新的代名词的话...有没有办法在不重新启动Solr服务器的情况下动态更新同义词文件?
那么,有没有办法来更新文件,无需重新启动的Solr服务器并将我的搜索结果考虑为新的同义词?
请帮助我,如果任何人有任何想法..提前 感谢...
我想你可以建立自己的SynonymFilterFactory扩展原有的和使用您的自定义FSTSynonymFilterFactory作为委托人。 您SynonymFilterFactory应该扩展了原有的SlowSynonymFilterFactory,并呼吁:
map = loadSolrSynonyms(loader, true, analyzer);
,每当你想重新加载同义词文件。
当你的文件发生改变时,你可以使用一个看门狗线程来唤醒每X时间,并检查sysnonim文件是否被修改,或者你可以使用一些file watcher来获得更改文件时的通知。
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内核准备好时,它接管并卸载旧的内核。
谢恩:谢谢你的答复... 你可以给我例子如何编写自定义事实和如何在scheme.xml中使用它? 给我一些链接引用...如果你有。 我是新来的Solr我没有好主意。 – 2012-07-19 08:58:26
当然:http://java.dzone.com/news/writing-solr-analysis-filter – shem 2012-07-19 09:31:30
谢谢@Shem ... 它可以帮助我很多.. – 2012-07-19 10:05:50