ruby-on-rails – Solr / Sunspot – 在运行时确定索引语言,动态
发布时间:2020-12-17 04:22:58 所属栏目:百科 来源:网络整理
导读:我想使用Solr Sunspot来索引双语FR-EN网站.问题:模特邮政可以用法语或英语写成.我可以在运行时确定语言是什么,但我也需要Solr来相应地索引模型. EG:对于法国模特,我需要一个法国干手, filter class="solr.SnowballPorterFilterFactory" language="French"/
我想使用Solr Sunspot来索引双语FR-EN网站.问题:模特邮政可以用法语或英语写成.我可以在运行时确定语言是什么,但我也需要Solr来相应地索引模型.
EG:对于法国模特,我需要一个法国干手, <filter class="solr.SnowballPorterFilterFactory" language="French"/> 我有什么选择?我可以在运行时更改Solr分析仪吗?我可以为每种语言制作一套分析仪吗? 解决方法
这是一个很好的问题,正在讨论包含在太阳黑子中的一个特征.
Sunspot使用动态字段命名约定来设置其架构.例如,以下是文本字段的两个现有定义: <dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/> <dynamicField name="*_texts" stored="true" type="text" multiValued="true" indexed="true"/> 这些对应于模式中先前定义的fieldType name =“text”. <fieldType name="text" class="solr.TextField" omitNorms="false"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StandardFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> 您可以为要索引的不同语言添加类似的定义(如Mauricio所述),然后设置一些新的dynamicField定义以使用它们. 1.法语文本字段的fieldType定义 <fieldType name="text_fr" class="solr.TextField" omitNorms="false"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="French"/> <filter class="solr.StandardFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> 2.法语文本字段的dynamicField定义 <dynamicField name="*_text_fr" stored="false" type="text" multiValued="true" indexed="true"/> <dynamicField name="*_texts_fr" stored="true" type="text" multiValued="true" indexed="true"/> 3.使用太阳黑子中的法语文本字段 最新的Sunspot 1.2(尚未发布 – 使用1.2.rc4)支持:as选项,允许您指定字段名称. searchable do text :description,:as => 'description_text_fr' end 就像我说的,这是我想要添加到太阳黑子1.3或1.4的东西.就个人而言,我希望看到类似的内容:lang => :zh_cn文本字段定义以选择适当的字段定义.您可以随意在Sunspot邮件列表中加入您的想法! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |