Am alguien esperando con suficiente visión sobre el funcionamiento interno de Lucene podría ser capaz de apuntar en la dirección correcta =)TermQuery no volver en un término de búsqueda conocido, pero WildcardQuery hace
voy a omitir la mayor parte del que rodea el código de irellevant, y corte directamente a la persecución. Tengo un índice de Lucene, a la que estoy añadiendo el siguiente campo para el índice (las variables sustituidos por sus valores literales):
document.Add(new Field("Typenummer", "E5CEB501A244410EB1FFC4761F79E7B7",
Field.Store.YES , Field.Index.UN_TOKENIZED));
Más tarde, cuando busco mi índice (el uso de otros tipos de consultas), soy podido comprobar que este campo aparece de hecho en mi índice - como cuando bucle a través de todos los campos devueltos por Document.GetFields()
Field: Typenummer, Value: E5CEB501A244410EB1FFC4761F79E7B7
hasta aquí todo bien :-)
Ahora el problema real es - ¿Por qué no puedo usar un TermQuery para buscar en este valor y obtener un resu lt.
Este código produce: 0 hits
// Returns 0 hits
bq.Add(new TermQuery(new Term("Typenummer",
"E5CEB501A244410EB1FFC4761F79E7B7")), BooleanClause.Occur.MUST);
Pero si me cambio a un WildcardQuery (sin comodines), me sale el 1 hit espero.
// returns the 1 hit I expect
bq.Add(new WildcardQuery(new Term("Typenummer",
"E5CEB501A244410EB1FFC4761F79E7B7")), BooleanClause.Occur.MUST);
longitudes de campo He comprobado, he comprobado que estoy usando el mismo analizador y así sucesivamente y todavía estoy en la plaza 1 de por qué esto es.
¿Alguien puede indicarme una dirección en la que debería estar mirando?
No estoy muy familiarizado con Lucene.net, pero en caso de que utilice la misma estructura de índice que la versión de Java, puede usar Luke http://code.google.com/p/luke/ para verificar que su índice la estructura cumple con tus expectativasAlternativamente, ¿podría verificar si TermsIndex # seekExact logra encontrar su término? – jpountz