WildcardQuery error in Solr我使用solr搜索文档,并且尝试使用此查询"
是否有任何补丁程序可以使它仅与*一起使用?还是进行这样的查询非常昂贵? 如果需要所有文档,请在*:* 上进行查询 如果您希望所有带有特定字段(例如id)的文档,请尝试id:[* TO *] Lucene不允许您默认使用星号来启动WildcardQueries,因为这些查询的费用非常高,在大型索引上将非常非常慢。 如果您正在使用Lucene QueryParser,请在其上调用setAllowLeadingWildcard(true)启用它。 如果您希望所有文档都具有特定的字段集,那么与使用QueryParser相比,以编程方式查询或遍历索引要好得多。您实际上应该只使用QueryParser来分析用户输入。
我只是在lukeall上对索引执行此操作,并且它起作用了,因此它应该在使用标准查询解析器的Solr中起作用。我实际上并没有使用Solr。 在基本的Lucene中,有一个很好的理由说明为什么您永远不会查询每个文档,这是因为要查询文档,您必须使用 如果您只是想获取所有文档,Solr确实支持*:*查询。这是我唯一知道的Solr让您以*开头的查询。我确定您可能已经将其视为Solr管理员页面中的默认查询。 如果您尝试使用*作为第一个字符进行更具体的查询,例如说id:* 456,那么我见过的最好的方法之一就是对该字段进行两次索引。通常一次(字段名称:id),一次所有字符都反转(字段名称:reverse_id)。然后,您基本上可以通过发送查询reverse_id:654来执行查询id:456。希望有道理。 您还可以在http://www.mail-archive.com/solr-user@lucene.apache.org/上搜索Solr用户组邮件列表,其中经常会出现类似这样的问题。 以下Solr问题是对能够配置默认lucene查询解析器的请求。 在本期中,您可以找到以下说明如何"修补" Solr。通过此修改,您可以使用*。 开始查询。
我不确定是否需要setLowercaseExpandedTerms ... 实际上,我一直在使用一种解决方法。我在ID后面附加了一个字符,例如:A1,A2等。 使用该字段中的此类值,可以使用查询 进行搜索 但是很想找出是否存在真正的解决方案。 我假设使用id:*,您只是想匹配所有文档,对吧? 我以前从未使用过solr,但是根据我的Lucene经验,在接收数据时,我们向每个文档添加了一个隐藏字段,然后当我们需要返回每条记录时,我们会在其中搜索字符串常量每个记录都相同的字段。 如果无法根据情况添加类似的字段,则可以将RegexQuery与正则表达式一起使用,该正则表达式将匹配在id字段中可以找到的任何内容。 编辑:实际回答问题。我从来没有听说过可以使它正常工作的补丁,但是如果它可以使其工作得相当好,我会感到惊讶。请参阅此问题,以了解不受约束的PrefixQuery可能导致问题的原因。 |