在索引期间的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"/>
所有搜索都针对一个全能字段&#34;文字&#34;:
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
所有语言特定字段都被复制到&#34; text&#34;字段,以便可用于搜索查询:
<copyField source="title_en" dest="text"/>
<copyField source="title_es" dest="text"/>
我关注的是:,因为&#34; text&#34;字段正在进行自己的索引,应用我假设&#34; text_general&#34;索引规则,然后重新索引发生,我想所有以前语言特定字段(title_en,title_es)的语言特定索引规则都将丢失。
如果是这样,那么如何在一个查询中搜索所有数据,保留特定于语言的索引?
答案 0 :(得分:1)
是的,text
(定义为text_general
)中存储的数据仅根据该字段的规则进行处理,并且不受title_en
或title_es
的影响。 copyField
在任何值处理之前发生,因为您通常(如本例所示)想要对字段执行不同的标记化和分析。
一个简单的解决方案是,如果要使用查询字段参数qf=title_en,title_es
进行搜索,则可以查询title_en和title_es字段。这将根据您的查询搜索已处理内容的英语和西班牙语版本。