J'essaie de trouver des documents contenant des astérisques/marques de requête dans le champ de texte Solr en utilisant Edismax parser. Tout fonctionne parfaitement lorsque je recherche du texte habituel (fq={!edismax}textfield:*sometext*
) ou même pour tout autre special Lucene character en utilisant l'échappement (fq={!edismax}textfield:*\~*
).Astérisque évité/marque de requête ne pas échapper lors de l'utilisation de générique principal dans Edismax
Cependant lors de la recherche *
(fq={!edismax}textfield:*\**
) ou ?
(fq={!edismax}textfield:*\?*
) ces personnages semblent ne pas être échappé, puisque tous les documents sont renvoyés. J'essaye aussi URL encoding pour les caractères échappés (comme \%2A
au lieu de \*
), cependant le résultat est le même.
Le problème semble préoccupation majeure wildcards que, depuis fq={!edismax}textfield:\**
et fq={!edismax}textfield:\?*
retour des résultats corrects, mais fq={!edismax}textfield:*\*
et fq={!edismax}textfield:*\?
ne le font pas (ainsi que fq={!edismax}textfield:*sometext\*
etc.).
Comment est-il possible de rechercher *
/?
en utilisant Edismax avec un astérisque générique?
Je travaillerais pour moi si j'utilisais un tokenizer comme WhitespaceTokenizerFactory. Cependant, j'ai besoin de rechercher une coïncidence stricte de phrases et d'utiliser KeywordTokenizerFactory. Par conséquent, pour trouver une partie du texte du champ, je dois utiliser des caractères génériques. – dev4
Vous devriez pouvoir obtenir une coïncidence stricte des phrases sans traiter chaque valeur de champ comme un seul jeton. Faire des expressions rationnelles contre des jetons est essentiellement un balayage de table complet. Ceci est garanti de ne pas évoluer. Je recommande une approche différente. –