Solr索引和搜索多语言数据

时间:2014-07-01 11:00:13

标签: solr indexing

在索引期间的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)的语言特定索引规则都将丢失。

如果是这样,那么如何在一个查询中搜索所有数据,保留特定于语言的索引?

1 个答案:

答案 0 :(得分:1)

是的,text(定义为text_general)中存储的数据仅根据该字段的规则进行处理,并且不受title_entitle_es的影响。 copyField在任何值处理之前发生,因为您通常(如本例所示)想要对字段执行不同的标记化和分析。

一个简单的解决方案是,如果要使用查询字段参数qf=title_en,title_es进行搜索,则可以查询title_en和title_es字段。这将根据您的查询搜索已处理内容的英语和西班牙语版本。