2017-03-29 1 views
1

Je fais divers regepx_filters dans un index pour modifier le texte d'index enregistré, ceci à partir de données qui sont à l'origine au format html étiqueté (plusieurs zones). Après que je le fasse est maintenant possible de faire un deuxième index basé sur le premier index modifié qui utilise seulement une des zones dans l'index original?Puis-je créer un index à partir d'un autre index?

index_zones = Title, Author, Description 

Puis-je, après indexation cela avec une configuration personnalisée, puis dupliquer cet index d'une manière qui dit

Create IndexB based on IndexA using ZONE:(Title) only

Say, par exemple, je l'ai fait l'expression rationnelle suivante:

regexp_filter=(<Title>.*?ipad.*?)(<\/Title>)<Description>.*?Used.*?<\/Description>=>\1 Used\2 in order to index used into the Title Zone. 

Maintenant, je veux réindexer ou faire un nouvel index avec juste le nouvellement indexé

<Title>Bla bla ipad bla bla Used</Title> 

est-ce possible? Sinon, puis-je mettre à jour ma table Mysql avec le texte nouvellement indexé?

Répondre

2

Je ne pense pas qu'il soit possible de créer un index basé sur un index sphinx existant. Je ne pense pas non plus qu'il soit possible d'extraire le résultat de regexp_filtered - je suis à peu près sûr qu'il est le seul disponible pour faire une requête. Pourquoi ne faites-vous pas votre regex avant l'indexation sphinx? Par exemple, créez une nouvelle colonne db ipad_used_regex et remplissez-la avec le langage de script de votre choix. Ou en utilisant mariaDb avec le PCRE Regex Enhancements vous pourriez construire le match regex dans le SQL, quelque chose comme ceci:

SELECT Title, REGEXP_REPLACE(Title, "(<Title>.*?ipad.*?)(<\/Title>)<Description>.*?Used.*?<\/Description>", '\\1 Used\\2') as ipad_used_regex 
FROM `your_table` 

Vous pouvez ensuite utiliser ce SQL dans votre source d'index de sphynx?

+0

Je pense que l'utilisation de la SQl dans la source pourrait devenir lourde car mon exemple était un simple et dilué l'un des réels mais oui il semble que dans ce cas, je vais devoir pré-traiter le mysql qui sera ajouter un surcoût inévitable qui est trop mauvais. zone_weights serait * tout à fait * un ajout utile! – user3649739