2008-11-07 14 views

Odpowiedz

56

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

1

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

7

Wykrzyknik działa na nie tak dobrze, więc:

/solr/select/?q=!id:A59* 

powinny działać w przypadku powyżej.

+1

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

0

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

0

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.

0

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