Le espressioni regolari consentono la sintassi di corrispondenza del modello mostrata di seguito. Sto cercando di implementare un potente strumento di ricerca che implementa il maggior numero possibile di questi. Mi è stato detto che edismax è lo strumento più flessibile per il lavoro. Quale delle espressioni di corrispondenza del modello qui sotto può essere eseguita con edismax? Posso fare meglio di edismax? Puoi suggerire quali filtri e patch di parser posso usare per raggiungere questa funzionalità? Sto sognando se penso che Solr possa raggiungere prestazioni accettabili (cioè tempo di elaborazione lato server) di questi tipi di ricerche?Quali funzioni di espressioni regolari sono supportate da Solr edismax?
regolari espressione di sintassi & esempi mysql
- ^partita dall'inizio della stringa.
'fofo' REGEXP '^fo' => true
- $ corrisponde alla fine della stringa.
'fo\no' REGEXP '^fo\no$' => true
- * carattere jolly illimitato.
'Baaaan' REGEXP 'Ba*n' => true
- ? 0-1 carattere jolly.
'Baan' REGEXP '^Ba?n => false'
- + jolly illimitato.
'Bn' REGEXP 'Ba+n' => false
- | o.
'pi' REGEXP 'pi|apa' => true
- () * sequenza di corrispondenze.
'pipi' REGEXP '^(pi)*$' => true
- [a-DX], [^ a-DX] intervallo di caratteri/set
'aXbc' REGEXP '[a-dXYZ]' => true
- {n} o {m, n} cardinalità notazione
'abcde' REGEXP 'a[bcd]{3}e' => true
- [: character_class:]
'justalnums' REGEXP '[[:alnum:]]+' => true
Ho scavato un po 'di più. Esiste una [pagina che descrive la sintassi supportata] (https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/util/automaton/RegExp.html). Dopotutto, il motore regex non è Java, ma è stato implementato in Lucene nel pacchetto org.apache.lucene.util.automaton. Vedi anche la documentazione per [RegexpQuery] (https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/search/RegexpQuery.html). –
Ho appena provato '\ d {4}' in Solr 4.0 su un campo stringa. Non funziona. Sembra che possiamo usare solo '[0-9] {4}'. Tuttavia suppongo che^non sia necessario, dal momento che qualsiasi query come '/ [0-9] {5} /' è in realtà equivalente alla RegEx Perl-Compatibile '/^[0-9] {5} $ /' cioè non usa '. *' come prefisso significa che stai forzando la corrispondenza dal primo carattere. – arun
@RonaldWood Entrambi i link che hai postato sono ora morti. – BlackVegetable