1) Crear Índices personalizados y en español
Para crear nuestros propios Índices en OpenCMS, tenemos que acceder a Administration View > Search Management > New Index

Es muy importante elegir correctamente el idioma (locale) del Índice, ya que de este depende la indexación que se realiza de los documentos, etc. Por ejemplo en el idioma ingles, que es la opción por defecto, se descartan términos como: the, a, me, he, etc. con esto se consigue optimizar los Índices para el idioma con el que trabajamos.
El problema lo tenemos en que por defecto solo podemos seleccionar las locale: de, it, en, fr. y el español no aparece. Para conseguirlo tenemos que editar el fichero WEB-INF/config/opencms-search.xml y añadir las siguientes lineas dentro de la sección analizers:
<analyzer>
<class>org.apache.lucene.analysis.snowball.SnowballAnalyzer</class>
<stemmer>Spanish</stemmer>
<locale>es</locale>
</analyzer>tras esto reiniciamos el servidor de aplicaciones, en mi caso tomcat.
Y ya podemos crear un índice personalizado en español


creamos un source personalizado, asignándole tipos de documentos y una URL, y se lo asignamos al Índice creado



Cuando acabemos de definir y configurar el Índice debemos reconstruirlo con la opción rebuild.

Tras esto la forma mas fácil de probar que funciona es con el buscador de ejemplo que viene en la documentación, que nos permite seleccionar sobre que índice realizamos la búsqueda.

Nos puede ser muy útil también visualizar el contenido de los índices generados a través de la utilidad Luke. Por ejemplo para abrir el índice que acabo de crear, abro en Luke la ruta /opencms/WEB-INF/index/Indice_ES .

2) Búsqueda por propiedades personalizadas
Una necesidad muy común es definir para nuestros documentos properties personalizadas, por ejemplo Autor, ISBN, Editorial, etc.

Esto es bien sencillo, pero poco útil si no configuramos también el indexador de OpenCMS para que tenga en cuenta estas nuevas propiedades al regenerar los indices. Además de modificar las .jsp de nuestro buscador para que busque sobre dichas propiedades.
Configuramos los fields a indexar desde Administration View > Search Management > View field configurations


En mi caso he definido los fields Autor y ISBN a partir de las properties definidas anteriormente.

Creamos un buscador de prueba basado en el de ejemplo search.jsp.
mi_search.jsp, al que añado únicamente las siguientes lineas respecto al original:
...
<tr><th valign="top">Fields:</th><td>
...
<input type="checkbox" name="field" value="Autor"
<%=(cms.property("field") == null || cms.property("field").indexOf("Autor") >= 0) ? "checked" : "" %>>Autor<br>
<input type="checkbox" name="field" value="ISBN"
<%=(cms.property("field") == null || cms.property("field").indexOf("ISBN") >= 0) ? "checked" : "" %>>ISBN<br>
...
también personalizo la jsp de resultados result.jsp en mi_result.jsp
<!-- Personalizando los resultados -->
<h6>Autor</h6>
<%= entry.getField("Autor") %>
<h6>ISBN</h6>
<%= entry.getField("ISBN") %>en esta última modificación fijaros en el método getField() que permite recuperar el valor de cualquier campo definido por nosotros.