2017-03-29 4 views
1

Ich mache verschiedene regepx_filters in einem Index, um den gespeicherten Indextext zu modifizieren, dies von Daten, die ursprünglich im getaggten HTML-Format (mehrere Zonen) sind. Nachdem ich das getan habe, ist es nun möglich, einen zweiten Index basierend auf dem ersten modifizierten Index zu erstellen, der nur eine der Zonen im ursprünglichen Index verwendet?Kann ich einen Index aus einem anderen Index erstellen?

index_zones = Title, Author, Description 

Kann ich, nachdem diese Indizierung mit einer benutzerdefinierten Konfiguration, dann duplizieren diesen Index in irgendeiner Weise, die

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

Sagen Sie zum Beispiel sagt, habe ich folgende regexp:

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

Jetzt möchte ich neu indizieren oder einen neuen Index nur mit dem neu indizierten

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

ist das möglich? Wenn nicht kann ich dann meine Mysql-Tabelle mit dem neu indizierten Text aktualisieren?

Antwort

2

Ich glaube nicht, dass es möglich ist, einen Index basierend auf einem vorhandenen Sphinx-Index zu erstellen. Ich denke auch nicht, dass es möglich ist, das regexp_filtered result zu erhalten - ich bin mir ziemlich sicher, dass es nur für Abfragen verfügbar ist.

Warum machen Sie Ihre Regex vor der Sphinx-Indizierung? Erstellen Sie beispielsweise eine neue db-Spalte ipad_used_regex und füllen Sie diese mit der gewünschten Skriptsprache. Oder mit mariaDb mit der PCRE Regex Enhancements Sie die Regex in die SQL bauen könnte, so etwas wie dieses:

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

Sie könnten dann diese SQL in Ihrem Sphinx Index Quelle verwenden?

+0

Ich denke, die Verwendung der SQl in der Quelle könnte umständlich sein, wie mein Beispiel war eine ziemlich einfache und verwässert eine der tatsächlichen, aber ja es scheint, als ob in diesem Fall werde ich die mysql, die vor fügen Sie einen unvermeidlichen Overhead hinzu, der zu schlecht ist. zone_weights wäre * ganz * eine hilfreiche Ergänzung! – user3649739

Verwandte Themen