【问题标题】:Solr non-english indexing and searchSolr 非英语索引和搜索
【发布时间】:2011-10-04 11:06:47
【问题描述】:

我是 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>

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

【问题讨论】:

    标签: xml solr


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我在 server.xml(Tomcat) 中添加了 URIEncoding="UTF-8" 现在搜索工作正常。
    【解决方案2】:

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

    <filter class="solr.ASCIIFoldingFilterFactory"/>
    

    这用它们的标准 ASCII 亲戚替换了德语变音符号并改进了匹配。

    【讨论】:

      【解决方案3】:

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

      所以 name:uverlässigkeit 不起作用。

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

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

      另外,正如 fiskfisk 提到的,如果在 Web 容器中使用它,您需要在 Tomcat 中添加编码。

      【讨论】:

      • 对不起,我不太明白你的意思是“你正在使用什么请求处理程序”,我默认使用全部。请给我一个链接,我可以在这里阅读。
      • 您使用 qt 参数来区分请求处理程序。如果,默认不支持前导通配符。您需要使用 deftype 作为 edismax 来检查 Extended Dismax 查询解析器。
      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 2012-07-03
      • 2011-03-24
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多