我有一个 Solr 3.5 索引,我需要运行一个快速包含查询以进行调试。
该列的类型为StrField,我需要执行类似的操作q=FieldName:*.MP4
我知道一个永久的解决方案是将字段重新索引为 ngram,但这只是一个快速的一次性查询,我想知道它是否可能。
我有一个 Solr 3.5 索引,我需要运行一个快速包含查询以进行调试。
该列的类型为StrField,我需要执行类似的操作q=FieldName:*.MP4
我知道一个永久的解决方案是将字段重新索引为 ngram,但这只是一个快速的一次性查询,我想知道它是否可能。
由于您使用的是 Solr 3.5,因此不支持以通配符开头的查询。但是,您可以创建所有术语的反向索引。这意味着您将向后索引所有术语,并且您的查询看起来像 q==FieldName:4pm.*
如果您使用的是 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 中打开前导通配符。