2013-03-01 95 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