Las expresiones regulares permiten la sintaxis de coincidencia de patrones que se muestra a continuación. Estoy tratando de implementar una poderosa herramienta de búsqueda que implemente tantos de estos como sea posible. Me dijeron que edismax es la herramienta más flexible para el trabajo. ¿Cuál de las siguientes expresiones de coincidencia de patrón se puede lograr con edismax? ¿Puedo hacerlo mejor que edismax? ¿Puede sugerir qué filtros y parches de analizador puedo utilizar para lograr esta funcionalidad? ¿Estoy soñando si creo que Solr puede lograr un rendimiento aceptable (es decir, el tiempo de procesamiento del lado del servidor) de este tipo de búsquedas?¿Qué funciones de expresiones regulares son compatibles con Solr edismax?
regulares de expresión de sintaxis & ejemplos de mysql
- ^partido de inicio de la cadena.
'fofo' REGEXP '^fo' => true
- $ match al final de la cadena.
'fo\no' REGEXP '^fo\no$' => true
- * 0-wildcard ilimitado.
'Baaaan' REGEXP 'Ba*n' => true
- ? 0-1 comodín.
'Baan' REGEXP '^Ba?n => false'
- + 1-wildcard ilimitado.
'Bn' REGEXP 'Ba+n' => false
- | o.
'pi' REGEXP 'pi|apa' => true
- () * coincidencia de secuencia.
'pipi' REGEXP '^(pi)*$' => true
- [a-dX], [^ a-dX] intervalo de caracteres/set
'aXbc' REGEXP '[a-dXYZ]' => true
- {n} o {m, n} cardinalidad notación
'abcde' REGEXP 'a[bcd]{3}e' => true
- [: character_class:]
'justalnums' REGEXP '[[:alnum:]]+' => true
Cavé un poco más. Hay una [página que describe la sintaxis soportada] (https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/util/automaton/RegExp.html). El motor de expresiones regulares no es Java, después de todo, sino uno implementado en Lucene en el paquete org.apache.lucene.util.automaton. Véase también la documentación de [RegexpQuery] (https://builds.apache.org/job/Lucene-trunk/javadoc/core/org/apache/lucene/search/RegexpQuery.html). –
Acabo de probar '\ d {4}' en Solr 4.0 en un campo de cadena. No funciona. Parece que solo podemos usar '[0-9] {4}'. Sin embargo, supongo^no es necesario, ya que cualquier consulta como '/ [0-9] {5} /' es en realidad equivalente a Perl-Compatible RegEx '/^[0-9] {5} $ /' es decir, no se utiliza '. *' como prefijo significa que estás forzando el partido desde el primer char. – arun
@RonaldWood Ambos enlaces publicados ahora están muertos. – BlackVegetable