Solr / SolrNet - Utilisation des caractères génériques pour la lettre par lettre recherche

StackOverflow https://stackoverflow.com/questions/4749136

Question

Hey Guys, Im essayant de mettre en œuvre une fonctionnalité de recherche à une application écrivaient.

Solr 1.4.1 en cours d'exécution sur tomcat7 connexion JDBC à un MS SQLServer avec la vue indexation im Solr a l'indexation terminée et l'index fonctionne.

Pour rechercher et communiquer avec Solr j'ai créé un service peu de WCF de test (à mettre en œuvre avec notre service principal plus tard).

Le but est de mettre en œuvre un champ de texte dans notre principale application. Dans ce champ de texte, les utilisateurs peuvent commencer à taper quelque chose comme Paintbrush et petit à petit filtre dans la liste des objets comme des personnages de plus en plus sont entrés.

Cela fonctionne très bien et dandy avec Solr jusqu'à un certain point. Im en utilisant l'astérisque Wildcard à la fin de ma requête et en tant que telle im jeter beaucoup de demandes similaires p * Pennsylvanie* douleur* peinture *

etc. au niveau du serveur et ses résultats reviennent très bien (assez impressionnant rapide en fait). Le seul problème est qu'une fois que les types d'utilisateur le mot entier la requête est pinceau * auquel renvoie le point de Solr 0 résultats.

Il semble donc que la requête + générique ne peut être requête + quelque chose + et non requête rien

J'ai réussi à obtenir ce travail sous Lucene.Net mais Solr isnt faire les choses de la même façon, il semble.

Un conseil que vous pouvez me donner la mise en œuvre d'une telle fonctionnalité?

il n'y a pas beaucoup de code à regarder depuis im en utilisant SolrNet: http://pastebin.com/tXpe4YUe

je me dis que cela a quelque chose à voir avec l'analyseur et Parser, mais je ne suis pas encore que dans Solr de savoir où chercher:)

Était-ce utile?

La solution 2

Découlant semble être ce qui a causé le problème. Je l'ai fixé en utilisant un clone de text_ws au lieu de texte pour le type. Mes changements à scema.xml: http://pastebin.com/xaJZDgY4

Découlant est désactivé et l'indexation des minuscules est activée. Tant que toutes les requêtes sont en minuscules, ils doivent toujours donner des résultats (en cas du tout).

L'enjeu semble être que le travail de Analyzers avec Wildcards Do not, donc la logique qui rendrait Johnny le résultat de Johni ou Johnni est « cassé » lors de l'utilisation des caractères génériques.

Si vos problèmes face similiar et ma solution ici doesnt travail tout à fait, vous pouvez ajouter debugQuery = à votre chaîne de requête et de voir un peu plus sur ce qui se passe. Cela m'a aidé à cerner le problème.

Autres conseils

Je ne voudrais pas mettre en œuvre des suggestions avec des requêtes génériques préfixe dans Solr. Il existe d'autres mécanismes mieux adaptés pour ce faire. Voir:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top