2013-03-01 75 views
0

我有一个Solr 3.5索引,我需要运行一个快速包含查询用于调试目的。如何做一个StrField包含查询

列是型StrField,我需要做的是这样q=FieldName:*.MP4


我知道一个永久的解决办法是重新索引字段作为NGRAM,但是这仅仅是一个快速一次查询,我想知道是否有可能。

回答

1

由于您使用的是Solr 3.5,因此不支持以通配符开头的查询。但是,您可以创建所有术语的反向索引。这意味着您将向后索引所有条款,并且比您的查询看起来像q == FieldName:4 pm.*

+1

我想要升级的时间 – Evan 2013-03-08 18:56:24

0

如果您正在使用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中打开领先的通配符。

+0

当我尝试使用“前导通配符”时出现错误q = FieldName:* .MP4 – Evan 2013-03-01 22:08:45

+0

更新:我能找到的所有允许领先的通配符查询都是QueryParser.setAllowLeadingWildcard(true)。这不会为我工作,因为我在休息执行查询。有没有办法在查询字符串或solrconfig.xml中执行此操作? – Evan 2013-03-01 22:19:10

+0

您使用的是哪个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