我是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*”时,它不会返回。 我认为这是德语的问题,但我不知道如何解决这个问题。任何人都可以帮我理解错误。
答案 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容器。