Je veux indexer le champ suivant:Comment indexer ce champ dans ElasticSearch?
quick brown fox
Alors que la recherche d'exactement tous les 3 mots, dans l'ordre, frappera, mais une recherche pour seulement quelques-uns des mots, (comme ' renard brun '), va manquer.
En d'autres termes, je veux créer un index/requête pour ce qui suit est vrai:
# input for field
quick brown fox
# hits
brown fox quick
fox quick brown
quick brown fox
...
# misses
quick brown
fox
quick brown fox red
...
Il semble que je dois faire une coutume tokenizer de le faire. Un tokenizer qui explose un flux d'entrée dans ces permutations de mots-clés. Je ne sais pas par où commencer. J'utilise ruby / pneu. Est-ce la bonne idée? Comment puis-je créer mon propre tokenizer?
Vous ne pouvez pas utiliser une requête de correspondance avec l'opérateur AND, de sorte que tous les termes de la requête doivent apparaître dans les documents correspondants? L'ordre ne compterait pas à moins que vous ne fassiez une requête qui prenne en compte des positions comme une requête de phrase ou une requête de span. Est-ce que je manque quelque chose? – javanna
@javanna Non, je ne pense pas que je peux. Si je vous comprends bien, une requête pour 'fox' ne correspondrait-elle pas au champ 'quick brown fox'? J'essaie de créer un index où 'fox' ne correspond pas au champ 'quick brown fox' car l'utilisateur n'a pas inclus 'quick' ou' brown' dans la requête. Avoir du sens? –
A droite, j'avais le sentiment qu'il me manquait quelque chose. Peut-être pourriez-vous préciser dans votre question que ce sont des questions qui devraient ou ne devraient pas correspondre au document. Je ne sais pas ce que le usecase est, de toute façon ... ouais vous avez besoin de créer votre propre tokenizer, ne sais pas si vous pouvez obtenir ce que vous voulez combiner ceux qui existent déjà. Qu'avez-vous essayé? – javanna