正則表達式允許使用下面顯示的模式匹配語法。 我試圖實現一個強大的搜索工具,儘可能多地實現這些。 我被告知edismax是該工作最靈活的工具。 下面哪個模式匹配表達式可以用edismax完成?我可以比edismax做得更好嗎?您能否提出我可能用於實現此功能的哪些過濾器和解析器補丁?如果我認爲Solr能夠達到這些類型搜索的可接受性能(即服務器端處理時間),我是否在做夢?Solr edismax支持哪些正則表達式?
正則表達式語法&從mysql
- ^匹配開始字符串的例子。
'fofo' REGEXP '^fo' => true
- $匹配字符串的結尾。
'fo\no' REGEXP '^fo\no$' => true
- * 0-無限通配符。
'Baaaan' REGEXP 'Ba*n' => true
- ? 0-1通配符。
'Baan' REGEXP '^Ba?n => false'
- + 1-無限通配符。
'Bn' REGEXP 'Ba+n' => false
- |要麼。
'pi' REGEXP 'pi|apa' => true
- ()*序列匹配。
'pipi' REGEXP '^(pi)*$' => true
- [A-DX],[^一個-DX]字符範圍/設定
'aXbc' REGEXP '[a-dXYZ]' => true
- {N}或{M,N}基數符號
'abcde' REGEXP 'a[bcd]{3}e' => true
- [:character_class:]
'justalnums' REGEXP '[[:alnum:]]+' => true
我挖了一點。有一個[描述支持的語法的頁面](https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/util/automaton/RegExp.html)。正則表達式引擎畢竟不是Java,而是在org.apache.lucene.util.automaton包中的Lucene中實現的。另請參閱[RegexpQuery]的文檔(https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/search/RegexpQuery.html)。 – 2012-03-06 01:19:03
剛剛在一個字符串字段中試過Solr 4.0中的'\ d {4}'。這是行不通的。看起來我們只能使用'[0-9] {4}'。然而,我猜^是不需要的,因爲像'/ [0-9] {5} /'這樣的查詢實際上等價於Perl兼容的RegEx'/^[0-9] {5} $ /'即不使用'。*'作爲前綴意味着你從第一個字符強制匹配。 – arun 2013-02-17 20:03:29
@RonaldWood你發佈的這兩個鏈接現在已經死亡。 – BlackVegetable 2013-07-17 23:51:52