在我的Solr模式中,索引期间Solr检测被索引数据的语言,并根据所检测到的语言应用不同的索引规则。所有数据都存储在特定于语言的字段中,例如:
title_en
字段中。title_es
字段中。-
<field name="title_en" type="text_en" indexed="true" stored="true"/>
<field name="title_es" type="text_es" indexed="true" stored="true"/>
所有搜索都是针对“所有捕获”字段“文本”进行的:
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
所有特定于语言的字段都复制到"text“字段,以便可用于搜索查询:
<copyField source="title_en" dest="text"/>
<copyField source="title_es" dest="text"/>
我关心的是:,因为"text“字段是自己做索引的,应用"text_general”索引规则,然后进行重新索引,我猜之前针对语言特定字段(title_en、title_es)的所有特定语言索引规则都丢失了。
如果是,那么如何在一个查询中搜索所有数据,同时保留特定于语言的索引?
发布于 2014-07-03 11:35:42
是的,存储在text
(定义为text_general
)中的数据只根据该字段的规则进行处理,而不受title_en
或title_es
的影响。copyField
发生在对值的任何处理之前,因为您通常(在本例中)希望在字段上执行不同的标记化和分析。
一个简单的解决方案是查询title_en和title_es字段,如果您想同时搜索这两个字段,可以使用查询字段参数:qf=title_en,title_es
。这将根据您的查询搜索已处理内容的英文和西班牙文版本。
https://stackoverflow.com/questions/24508603
复制相似问题