2011-05-27 135 views
1

我想知道如何配置Solr进行多语言搜索。我有一个网站有Solr搜索。这是为英语工作,我想为所有语言工作。Solr多语言搜索

下面是我的架构..

<field name="url" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="title" type="text" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="content" type="text" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="contenttype" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="contentsize" type="integer" indexed="false" stored="true" required="false" multiValued="false" /> 
     <field name="timestamp" type="date" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="language" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="description" type="text" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="keywords" type="text" indexed="true" stored="true" required="false" multiValued="false" />  
    <field name="keywordsNoneStemmed" type="string" indexed="true" stored="true" required="false" multiValued="true" />  
     <field name="thumbnail" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="virtualitem" type="boolean" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="section" type="string" indexed="true" stored="true" required="false" multiValued="false"></field> 
    </fields> 

当我看到日志文件被Solr的索引以不同语言的网址,但我不知道如何展现搜索结果。我的网站正在使用.NET技术

回答

0

没有魔法弹。如果您知道输入文本的语言,那么您可以将语言存储在不同的字段中,并根据语言使用不同的词干。或者你可以避免使用stemmers,而是使用ngrams。

如果您继续使用停用词和受保护词,那么您需要编辑这些词,以免它们过于激进。例如,“is”和“by”是英语中的停用词,但它们的意思是许多斯堪的纳维亚语言中的“冰”和“城镇”。因此,您可以将它们从停用词中删除,但是您可能想要添加“je”和“il”,因为它们是法语停用词。但是“je”在荷兰语和塞尔维亚语等语言中有不同的含义,因此可能不会...

首先通过修剪标记器,分析器,过滤器链,然后用流利的其他语言进行一些测试。让他们向你展示奇怪的结果,并解释他们为什么奇怪。看看东方语言,因为ngram是真正处理它们的唯一方法。