Solr非英语索引和搜索

时间:2011-10-04 11:06:48

标签: xml solr

我是SOLR的新手。我有个问题。我通过xml将数据输入SOLR,德语数据,例如:

<?xml version="1.0" encoding="utf-8" ?>
<add>
<doc>
  <field name="id">1</field>
  <field name="name">Größen helfen, ihr Potenzial voll zu entfalten. Sicherheit und Zuverlässigkeit, Innovation und Integration sowie</field>
</doc>
</add>

此文档已成功保存,当我从管理面板搜索查询“name:*”时,它返回,但是当我尝试使用此查询搜索“name:*uverlässigkeit*”时,它不会返回。 我认为这是德语的问题,但我不知道如何解决这个问题。任何人都可以帮我理解错误。

3 个答案:

答案 0 :(得分:1)

您无法执行以通配符开头的搜索 - 在搜索查询中只允许使用postfix通配符(否则必须扫描与文档关联的所有术语)。如果您需要对前缀执行搜索,请将术语反转(但请注意,如果您使用字段而不考虑要搜索的内容,则可能会关闭其他功能)以及使用后缀通配符。

另请注意,您的应用程序容器(即Jetty,Tomcat等)必须能够识别UTF-8(对于Tomcat,您必须专门配置它)才能搜索UTF-8字符串才能正常工作

答案 1 :(得分:0)

或者,在查询/索引分析器中使用以下过滤器也是一个好主意:

<filter class="solr.ASCIIFoldingFilterFactory"/>

用标准的ASCII亲属替换德语变音符号并改善匹配。

答案 2 :(得分:0)

您使用的是什么请求处理程序?
标准请求处理程序不支持前导通配符查询。

所以名称:uverlässigkeit不起作用。

如果要使用前导通配符查询,则需要检查允许使用前导通配符的Extended Dismax解析器。 但是,通配符总会对性能产生影响。

外来字符的匹配与solr一起正常工作。但是如果使用ASCII折叠或ISO拉丁过滤器,则需要在索引和查询时与分析保持一致。

另外,正如fiskfisk所提到的,你需要在Tomcat中添加编码,如果使用它就是web容器。