2016-11-07 2 views
0

Suite est mon schémafiltrage lucene.net sur plusieurs champs

Nom_produit (Analysé), Catégorie (Analysé)

Scénario:
Je veux chercher les produits dont la catégorie est exactement « Cellphones & Accessoires » et Nom_produit est "sam *"

équivalent de requêtes SQL est

select * from products 
where Product_Name like '%sam%' and Category='Cellphones & Accessories' 

J'utilise lucene.net. J'ai besoin d'une instruction lucene.net équivalente.

Répondre

0

Comme il est quelques mois, je serai bref (je peux développer si vous êtes toujours intéressé) ...

Si vous voulez avoir une correspondance exacte à la catégorie alors ne pas analyser. Les analyseurs coupent la chaîne en morceaux qui peuvent ensuite être recherchés. Le cas correspondant peut être problématique alors peut-être que l'analyseur en minuscules fonctionnerait pour ce champ. Il peut être utile d'analyser plusieurs champs de différentes manières afin que différentes requêtes puissent être utilisées.

NOTE: « sam * » ne correspond pas à « % sam% »

Voulez-vous « sam » pour être un préfixe-à-dire « échantillon » ou un mot « le produit sam »? S'il s'agit d'un mot, un analyseur sans mot de passe devrait fonctionner correctement. Une astuce consiste à créer plusieurs champs (avec le même nom) avec des variantes du nom. Probablement avec juste un analyseur de minuscules

nom: « un peu de produit de l'échantillon »

nom: « produit échantillon »

nom » « produit »

alors jetez un oeil à « requêtes préfixe » Une requête de (nom: sam) correspondra alors

Regardez également le PerFieldAnalyzerWrapper afin d'utiliser un analyseur différent pour chaque champ