Ich habe ein Problem mit Delta-Index-Updates.
Wenn die Dokument-ID kleiner als max_doc_id
ist, ist sie nicht im Delta-Index enthalten. Solange der Hauptindex nicht aktualisiert wird, werden die Änderungen nicht auf diese Daten angewendet.
Angenommen, wir haben 1000 Daten.
Wenn das fünfzigste Dokument geändert wird, ändert sich der Delta-Index nicht.
Wie wird Delta-Index Dokumente Änderungen, die ihre ID ist weniger als max_doc_id
?
Gibt es eine Möglichkeit, Delta-Index enthält die Daten aktualisiert werden, so dass wir nicht auf Main-Index-Lauf warten müssen?sphinxsearch Delta-Index-Updates
CREATE TABLE sph_counter
(
counter_id INTEGER PRIMARY KEY NOT NULL,
max_doc_id INTEGER NOT NULL
);
source main
{
# ...
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents
sql_query = SELECT id, title, body FROM documents \
WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
source delta : main
{
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, title, body FROM documents \
WHERE id>(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
Ich habe dich nicht verstanden? Wie auch immer, danke – navid
Nun, es ist sehr ähnlich wie mit einem Zeitstempel, nur eine inkrementierende Sequenz explizit beibehalten. Jedes Mal, wenn Sie ein Dokument aktualisieren, aktualisieren Sie die Version. Gleiches Ergebnis - hätte eine Möglichkeit herauszufinden, welche Dokumente sich geändert haben. Beide würden funktionieren – barryhunter