Jak wybrać/usunąć wszystkie dokumenty z Solr, używając boolowskiego NOT?Boolean NOT w zapytaniu Solr
tj. Jak usunąć wszystkie dokumenty z Solr, którego identyfikator NIE zaczyna się od A59?
Jak wybrać/usunąć wszystkie dokumenty z Solr, używając boolowskiego NOT?Boolean NOT w zapytaniu Solr
tj. Jak usunąć wszystkie dokumenty z Solr, którego identyfikator NIE zaczyna się od A59?
Użyj "-", aby wskazać NOT.
Na przykład kwerendy dokumentów z id nie wychodząc z A59, zapytanie będzie: -id:A59*
, czyli: /solr/select/?q=-id:A59*
Aby usunąć poprzez zapytania, pisać zapytanie w Usuń wiadomość do obsługi aktualizacji, jak określono here.
EDIT: NIE (wielkimi literami) może być również używany jako operator
Nie wierzę, że negatywna usuwać przez kwerenda działa. Zobacz ten bilet Jira: https://issues.apache.org/jira/browse/SOLR-381
Mówią, że istnieje obejście przedrostka w:, ale nie mam z tym szczęścia.
To nie działa (tak samo z użyciem NOT) java -Ddata = args -jar /opt/solr/example/exampledocs/post.jar "-userid: *" java -jar/opt/solr/example /exampledocs/post.jar * .xml
Dodając a: daje błąd składni (tak samo z użyciem NOT) java -Ddata = args -jar /opt/solr/example/exampledocs/post.jar „: - userid: *” java -jar /opt/solr/example/exampledocs/post.jar * .xml
SimplePostTool: wersja 1.4 SimplePostTool: posty args do http://localhost:8983/solr/update .. SimplePostTool: FATAL: Solr zwrócił błąd # 400 Błąd parsowania Lucene zapytania SimplePostTool: wersja 1.4
Wykrzyknik działa na nie tak dobrze, więc:
/solr/select/?q=!id:A59*
powinny działać w przypadku powyżej.
przed usunięciem upewnij się, że identyfikatory, do których się odnosisz, są ciągami iw żaden sposób nie będą utworzone przez dwa połączone terminy. Sposób, w jaki bym to zrobił, to odczyt danych z solr ze skryptu i wykonanie pojedynczego usunięcia lub w partiach, ponieważ zapewnia lepszą kontrolę i walidację każdego identyfikatora, co zmniejsza ryzyko błędnego usunięcia Dlatego 1 odczytać dane od SOLR ze skryptu stosując /SOLR/wyboru/q = id: A59 *
2 weryfikacji i walidacji identyfikatory
3 usunąć je jeden za drugim lub w grupie 10 identyfikatorów jednocześnie
Pozdrawiam
R Ajat
Jak Mauricio stwierdził:
Użyj - symbol, aby wskazać, co chcesz wykluczyć w zapytaniu. Następujące dwa zapytania usunie wszystkie dokumenty z wyjątkiem tych, które zaczynają się od A59.
GET http://<url>/solr/<core>/update?stream.body=<delete><query>-id:A59*</query></delete>
GET http://<url>/solr/<core>/update?stream.body=<commit/>
Pierwsza linia wykonuje operację usuwania. Druga linia wykonuje zatwierdzenie.
Użycie symbolu - przed plikami oznacza wykluczenie tej konkretnej wartości. Da wynik podobny do: NOT Equal
Poniżej znajduje się przykładowy ciąg kwerend adresu URL, gdzie. Ja zachowałem "& FQ = -HQ_City_Code: MEL"
Będzie pominąć cały wynik, który jest o HQ_City_Code wartość MEL.
http://localhost:8983/solr/HQ_SOLR_Hotels/select?q=*:*&fq=HQ_National_Code:TH&fq=HQ_TYPE:hotel_EN&fq=HQ_Country_Code:AU&**fq=-HQ_City_Code:MEL**&wt=json&indent=true
Ta odpowiedź nie zadziałała w miejscu, w którym powyższa była, nie jestem pewien, ale myślę, że '!' Może mieć nieco inną semantykę – Sammaye