我有一個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