variable template tag registered one not must library ifequal examples django solr django-haystack django-search-lucene

django - template - is not a registered tag library. must be one of:



Apache solr busca parte de la palabra (5)

Si quieres encontrar todas las palabras que comienzan con chick, busca chick *.

Estoy usando el motor de búsqueda apache solr para indexar la base de datos de mi sitio web.

Estoy usando django + http://haystacksearch.org/

Entonces digamos que tengo un documento que tiene la palabra "Pollo"

Cuando busco "pollo" - solr puede encontrar este documento

Pero cuando busco "chica", no encuentra nada ...

¿Hay alguna manera de arreglar esto?



Cuando he usado

<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />

para realizar búsquedas con comodines de la respuesta de Brian, el tiempo de indexación de Solr aumentó dramáticamente. ¡En más de 20 veces! La otra decisión del problema de búsqueda de comodines que encontré aquí:

http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

Solo necesitas agregar filtro

<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />

(tokenizer predeterminado - solr.WhitespaceTokenizerFactory en el bloque de índice de FieldType). Para mí, el resultado fue el mismo con menos costos del sistema.


No he cambiado ninguna configuración. Solo estoy usando star en el frente y en la parte posterior de mi searchString: * chicke * (sin espacios en blanco al final -> es debido a SO formateando la palabra como cursiva si usa * al principio y al final)


Nota: ¡La siguiente solución es Solr 1.4 (y superior) específica!

Para obtener más flexibilidad, recomendaría indexar sus datos con NGramTokenizerFactory para completar las búsquedas de comodines frontales y posteriores. Si solo desea buscar subcadenas al principio o al final de la cadena, considere usar EdgeNGramTokenizerFactory .

Aquí hay un reemplazo en el reemplazo del tipo de campo de texto que satisfaría su necesidad:

<fieldType name="text" class="solr.TextField" > <analyzer type="index"> <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>