我有一个Solr 3.5索引,我需要运行一个快速包含查询用于调试目的。如何做一个StrField包含查询
列是型StrField,我需要做的是这样q=FieldName:*.MP4
我知道一个永久的解决办法是重新索引字段作为NGRAM,但是这仅仅是一个快速一次查询,我想知道是否有可能。
我有一个Solr 3.5索引,我需要运行一个快速包含查询用于调试目的。如何做一个StrField包含查询
列是型StrField,我需要做的是这样q=FieldName:*.MP4
我知道一个永久的解决办法是重新索引字段作为NGRAM,但是这仅仅是一个快速一次查询,我想知道是否有可能。
由于您使用的是Solr 3.5,因此不支持以通配符开头的查询。但是,您可以创建所有术语的反向索引。这意味着您将向后索引所有条款,并且比您的查询看起来像q == FieldName:4 pm.*
如果您正在使用Solr的4.0+,你可以做一个正则表达式查询:
q=FieldName:/.*%5C.MP4/
其中%5C
是编码的URL \
。
更新:那么,你甚至不需要那个。您的查询
q=FieldName:*.MP4
应该工作。我在4.0和3.6.1中试过,它工作正常。
如果你想*.mp4
为好,然后做OR查询是这样的:
q=FieldName:(*.MP4 OR *.mp4)
更新2:由于您的Solr的版本是3.5,你添加到你的问题后,我想无论是以上选项不适用于您。我猜你需要重新编制索引,除非有人知道如何在solr 3.5中打开领先的通配符。
当我尝试使用“前导通配符”时出现错误q = FieldName:* .MP4 – Evan 2013-03-01 22:08:45
更新:我能找到的所有允许领先的通配符查询都是QueryParser.setAllowLeadingWildcard(true)。这不会为我工作,因为我在休息执行查询。有没有办法在查询字符串或solrconfig.xml中执行此操作? – Evan 2013-03-01 22:19:10
您使用的是哪个Solr版本?我在4.0和3.6中试过,并且领先的通配符工作。请参阅http://grokbase.com/t/lucene/solr-user/12bc10xe6y/is-leading-wildcard-search-turned-on-by-default-in-solr-3-6-1 – arun 2013-03-01 22:20:35
我想要升级的时间 – Evan 2013-03-08 18:56:24